View Javadoc
1   // Generated from org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4 by ANTLR 4.10.1
2   package org.apache.shardingsphere.sql.parser.autogen;
3   import org.antlr.v4.runtime.atn.*;
4   import org.antlr.v4.runtime.dfa.DFA;
5   import org.antlr.v4.runtime.*;
6   import org.antlr.v4.runtime.misc.*;
7   import org.antlr.v4.runtime.tree.*;
8   import java.util.List;
9   import java.util.Iterator;
10  import java.util.ArrayList;
11  
12  @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
13  public class SQLServerStatementParser extends Parser {
14  	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }
15  
16  	protected static final DFA[] _decisionToDFA;
17  	protected static final PredictionContextCache _sharedContextCache =
18  		new PredictionContextCache();
19  	public static final int
20  		T__0=1, BLOCK_COMMENT=2, INLINE_COMMENT=3, AND_=4, OR_=5, NOT_=6, TILDE_=7, 
21  		VERTICAL_BAR_=8, AMPERSAND_=9, SIGNED_LEFT_SHIFT_=10, SIGNED_RIGHT_SHIFT_=11, 
22  		CARET_=12, MOD_=13, COLON_=14, PLUS_=15, MINUS_=16, ASTERISK_=17, SLASH_=18, 
23  		BACKSLASH_=19, DOT_=20, DOT_ASTERISK_=21, SAFE_EQ_=22, DEQ_=23, EQ_=24, 
24  		NEQ_=25, GT_=26, GTE_=27, LT_=28, LTE_=29, POUND_=30, LP_=31, RP_=32, 
25  		LBE_=33, RBE_=34, LBT_=35, RBT_=36, COMMA_=37, DQ_=38, SQ_=39, BQ_=40, 
26  		QUESTION_=41, AT_=42, SEMI_=43, DOLLAR_=44, WS=45, SELECT=46, INSERT=47, 
27  		UPDATE=48, DELETE=49, CREATE=50, ALTER=51, DROP=52, TRUNCATE=53, SCHEMA=54, 
28  		GRANT=55, REVOKE=56, ADD=57, SET=58, TABLE=59, COLUMN=60, COLUMNS=61, 
29  		INDEX=62, CONSTRAINT=63, PRIMARY=64, UNIQUE=65, FOREIGN=66, KEY=67, POSITION=68, 
30  		PRECISION=69, FUNCTION=70, TRIGGER=71, PROCEDURE=72, PROC=73, VIEW=74, 
31  		INTO=75, VALUES=76, WITH=77, UNION=78, DISTINCT=79, CASE=80, WHEN=81, 
32  		CAST=82, TRIM=83, SUBSTRING=84, FROM=85, NATURAL=86, JOIN=87, FULL=88, 
33  		INNER=89, OUTER=90, LEFT=91, RIGHT=92, CROSS=93, USING=94, WHERE=95, AS=96, 
34  		ON=97, OFF=98, IF=99, ELSE=100, THEN=101, FOR=102, TO=103, AND=104, OR=105, 
35  		IS=106, NOT=107, NULL=108, TRUE=109, FALSE=110, EXISTS=111, BETWEEN=112, 
36  		IN=113, ALL=114, ANY=115, LIKE=116, ORDER=117, GROUP=118, BY=119, ASC=120, 
37  		DESC=121, HAVING=122, LIMIT=123, OFFSET=124, BEGIN=125, COMMIT=126, ROLLBACK=127, 
38  		SAVEPOINT=128, BOOLEAN=129, DOUBLE=130, CHAR=131, CHARACTER=132, ARRAY=133, 
39  		INTERVAL=134, DATE=135, TIME=136, TIMESTAMP=137, LOCALTIME=138, LOCALTIMESTAMP=139, 
40  		YEAR=140, QUARTER=141, MONTH=142, WEEK=143, DAY=144, HOUR=145, MINUTE=146, 
41  		SECOND=147, MICROSECOND=148, MAX=149, MIN=150, SUM=151, COUNT=152, AVG=153, 
42  		DEFAULT=154, CURRENT=155, ENABLE=156, DISABLE=157, CALL=158, INSTANCE=159, 
43  		PRESERVE=160, DO=161, DEFINER=162, CURRENT_USER=163, SQL=164, CASCADED=165, 
44  		LOCAL=166, CLOSE=167, OPEN=168, NEXT=169, NAME=170, COLLATION=171, NAMES=172, 
45  		INTEGER=173, REAL=174, DECIMAL=175, TYPE=176, BIT=177, SMALLINT=178, INT=179, 
46  		TINYINT=180, NUMERIC=181, FLOAT=182, BIGINT=183, TEXT=184, VARCHAR=185, 
47  		PERCENT=186, TIES=187, EXCEPT=188, INTERSECT=189, USE=190, MERGE=191, 
48  		LOOP=192, EXPAND=193, VIEWS=194, FAST=195, FORCE=196, KEEP=197, PLAN=198, 
49  		OPTIMIZE=199, SIMPLE=200, FORCED=201, HINT=202, READ_ONLY=203, DATABASE=204, 
50  		DECLARE=205, CURSOR=206, OF=207, RETURNS=208, DATEPART=209, RETURN=210, 
51  		READONLY=211, AT=212, PASSWORD=213, WITHOUT=214, APPLY=215, KEEPIDENTITY=216, 
52  		KEEPDEFAULTS=217, HOLDLOCK=218, IGNORE_CONSTRAINTS=219, IGNORE_TRIGGERS=220, 
53  		NOLOCK=221, NOWAIT=222, PAGLOCK=223, READCOMMITTED=224, READCOMMITTEDLOCK=225, 
54  		READPAST=226, REPEATABLEREAD=227, ROWLOCK=228, TABLOCK=229, TABLOCKX=230, 
55  		UPDLOCK=231, XLOCK=232, JSON_OBJECT=233, JSON_ARRAY=234, FIRST_VALUE=235, 
56  		LAST_VALUE=236, APPROX_PERCENTILE_CONT=237, APPROX_PERCENTILE_DISC=238, 
57  		WITHIN=239, FOR_GENERATOR=240, BINARY=241, ESCAPE=242, HIDDEN_=243, MOD=244, 
58  		PARTITION=245, PARTITIONS=246, TOP=247, ROW=248, ROWS=249, UNKNOWN=250, 
59  		XOR=251, ALWAYS=252, CASCADE=253, CHECK=254, GENERATED=255, NO=256, OPTION=257, 
60  		PRIVILEGES=258, REFERENCES=259, USER=260, ROLE=261, START=262, TRANSACTION=263, 
61  		ACTION=264, ALGORITHM=265, AUTO=266, BLOCKERS=267, CLUSTERED=268, NONCLUSTERED=269, 
62  		COLLATE=270, COLUMNSTORE=271, CONTENT=272, CONVERT=273, YEARS=274, MONTHS=275, 
63  		WEEKS=276, DAYS=277, MINUTES=278, DENY=279, DETERMINISTIC=280, DISTRIBUTION=281, 
64  		DOCUMENT=282, DURABILITY=283, ENCRYPTED=284, END=285, FILESTREAM=286, 
65  		FILETABLE=287, FILLFACTOR=288, FOLLOWING=289, HASH=290, HEAP=291, IDENTITY=292, 
66  		INBOUND=293, OUTBOUND=294, UNBOUNDED=295, INFINITE=296, LOGIN=297, MASKED=298, 
67  		MAXDOP=299, MOVE=300, NOCHECK=301, NONE=302, OBJECT=303, ONLINE=304, OVER=305, 
68  		PAGE=306, PAUSED=307, PERIOD=308, PERSISTED=309, PRECEDING=310, RANDOMIZED=311, 
69  		RANGE=312, REBUILD=313, REPLICATE=314, REPLICATION=315, RESUMABLE=316, 
70  		ROWGUIDCOL=317, SAVE=318, SELF=319, SPARSE=320, SWITCH=321, TRAN=322, 
71  		TRANCOUNT=323, ZONE=324, EXECUTE=325, EXEC=326, SESSION=327, CONNECT=328, 
72  		CONNECTION=329, CATALOG=330, CONTROL=331, CONCAT=332, TAKE=333, OWNERSHIP=334, 
73  		DEFINITION=335, APPLICATION=336, ASSEMBLY=337, SYMMETRIC=338, ASYMMETRIC=339, 
74  		SERVER=340, RECEIVE=341, CHANGE=342, TRACE=343, TRACKING=344, RESOURCES=345, 
75  		SETTINGS=346, STATE=347, AVAILABILITY=348, CREDENTIAL=349, ENDPOINT=350, 
76  		EVENT=351, NOTIFICATION=352, LINKED=353, AUDIT=354, DDL=355, XML=356, 
77  		IMPERSONATE=357, SECURABLES=358, AUTHENTICATE=359, EXTERNAL=360, ACCESS=361, 
78  		ADMINISTER=362, BULK=363, OPERATIONS=364, UNSAFE=365, SHUTDOWN=366, SCOPED=367, 
79  		CONFIGURATION=368, DATASPACE=369, SERVICE=370, CERTIFICATE=371, CONTRACT=372, 
80  		ENCRYPTION=373, MASTER=374, DATA=375, SOURCE=376, FILE=377, FORMAT=378, 
81  		LIBRARY=379, FULLTEXT=380, MASK=381, UNMASK=382, MESSAGE=383, REMOTE=384, 
82  		BINDING=385, ROUTE=386, SECURITY=387, POLICY=388, AGGREGATE=389, QUEUE=390, 
83  		RULE=391, SYNONYM=392, COLLECTION=393, SCRIPT=394, KILL=395, BACKUP=396, 
84  		LOG=397, SHOWPLAN=398, SUBSCRIBE=399, QUERY=400, NOTIFICATIONS=401, CHECKPOINT=402, 
85  		SEQUENCE=403, ABORT_AFTER_WAIT=404, ALLOW_PAGE_LOCKS=405, ALLOW_ROW_LOCKS=406, 
86  		ALL_SPARSE_COLUMNS=407, BUCKET_COUNT=408, COLUMNSTORE_ARCHIVE=409, COLUMN_ENCRYPTION_KEY=410, 
87  		COLUMN_SET=411, COMPRESSION_DELAY=412, DATABASE_DEAULT=413, DATA_COMPRESSION=414, 
88  		DATA_CONSISTENCY_CHECK=415, ENCRYPTION_TYPE=416, SYSTEM_TIME=417, SYSTEM_VERSIONING=418, 
89  		TEXTIMAGE_ON=419, WAIT_AT_LOW_PRIORITY=420, STATISTICS_INCREMENTAL=421, 
90  		STATISTICS_NORECOMPUTE=422, ROUND_ROBIN=423, SCHEMA_AND_DATA=424, SCHEMA_ONLY=425, 
91  		SORT_IN_TEMPDB=426, IGNORE_DUP_KEY=427, IMPLICIT_TRANSACTIONS=428, MAX_DURATION=429, 
92  		MEMORY_OPTIMIZED=430, MIGRATION_STATE=431, PAD_INDEX=432, REMOTE_DATA_ARCHIVE=433, 
93  		FILESTREAM_ON=434, FILETABLE_COLLATE_FILENAME=435, FILETABLE_DIRECTORY=436, 
94  		FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME=437, FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME=438, 
95  		FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME=439, FILTER_PREDICATE=440, HISTORY_RETENTION_PERIOD=441, 
96  		HISTORY_TABLE=442, LOCK_ESCALATION=443, DROP_EXISTING=444, ROW_NUMBER=445, 
97  		FETCH=446, FIRST=447, ONLY=448, MONEY=449, SMALLMONEY=450, DATETIMEOFFSET=451, 
98  		DATETIME=452, DATETIME2=453, SMALLDATETIME=454, NCHAR=455, NVARCHAR=456, 
99  		NTEXT=457, VARBINARY=458, IMAGE=459, SQL_VARIANT=460, UNIQUEIDENTIFIER=461, 
100 		HIERARCHYID=462, GEOMETRY=463, GEOGRAPHY=464, OUTPUT=465, INSERTED=466, 
101 		DELETED=467, ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS=468, ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES=469, 
102 		DISABLE_BATCH_MODE_ADAPTIVE_JOINS=470, DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK=471, 
103 		DISABLE_DEFERRED_COMPILATION_TV=472, DISABLE_INTERLEAVED_EXECUTION_TVF=473, 
104 		DISABLE_OPTIMIZED_NESTED_LOOP=474, DISABLE_OPTIMIZER_ROWGOAL=475, DISABLE_PARAMETER_SNIFFING=476, 
105 		DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK=477, DISABLE_TSQL_SCALAR_UDF_INLINING=478, 
106 		DISALLOW_BATCH_MODE=479, ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS=480, ENABLE_QUERY_OPTIMIZER_HOTFIXES=481, 
107 		FORCE_DEFAULT_CARDINALITY_ESTIMATION=482, FORCE_LEGACY_CARDINALITY_ESTIMATION=483, 
108 		QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n=484, QUERY_PLAN_PROFILE=485, EXTERNALPUSHDOWN=486, 
109 		SCALEOUTEXECUTION=487, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=488, KEEPFIXED=489, 
110 		MAX_GRANT_PERCENT=490, MIN_GRANT_PERCENT=491, MAXRECURSION=492, NO_PERFORMANCE_SPOOL=493, 
111 		PARAMETERIZATION=494, QUERYTRACEON=495, RECOMPILE=496, ROBUST=497, OPTIMIZE_FOR_SEQUENTIAL_KEY=498, 
112 		DATA_DELETION=499, FILTER_COLUMN=500, RETENTION_PERIOD=501, CONTAINMENT=502, 
113 		PARTIAL=503, FILENAME=504, SIZE=505, MAXSIZE=506, FILEGROWTH=507, UNLIMITED=508, 
114 		KB=509, MB=510, GB=511, TB=512, CONTAINS=513, MEMORY_OPTIMIZED_DATA=514, 
115 		FILEGROUP=515, NON_TRANSACTED_ACCESS=516, DB_CHAINING=517, TRUSTWORTHY=518, 
116 		FORWARD_ONLY=519, SCROLL=520, STATIC=521, KEYSET=522, DYNAMIC=523, FAST_FORWARD=524, 
117 		SCROLL_LOCKS=525, OPTIMISTIC=526, TYPE_WARNING=527, SCHEMABINDING=528, 
118 		CALLER=529, INPUT=530, CALLED=531, VARYING=532, OUT=533, OWNER=534, ATOMIC=535, 
119 		LANGUAGE=536, LEVEL=537, ISOLATION=538, SNAPSHOT=539, REPEATABLE=540, 
120 		READ=541, SERIALIZABLE=542, NATIVE_COMPILATION=543, VIEW_METADATA=544, 
121 		AFTER=545, INSTEAD=546, APPEND=547, INCREMENT=548, CYCLE=549, CACHE=550, 
122 		MINVALUE=551, MAXVALUE=552, RESTART=553, LOB_COMPACTION=554, COMPRESS_ALL_ROW_GROUPS=555, 
123 		REORGANIZE=556, RESUME=557, PAUSE=558, ABORT=559, INCLUDE=560, DISTRIBUTED=561, 
124 		MARK=562, WORK=563, REMOVE=564, AUTOGROW_SINGLE_FILE=565, AUTOGROW_ALL_FILES=566, 
125 		READWRITE=567, READ_WRITE=568, MODIFY=569, ACCELERATED_DATABASE_RECOVERY=570, 
126 		PERSISTENT_VERSION_STORE_FILEGROUP=571, IMMEDIATE=572, NO_WAIT=573, TARGET_RECOVERY_TIME=574, 
127 		SECONDS=575, HONOR_BROKER_PRIORITY=576, ERROR_BROKER_CONVERSATIONS=577, 
128 		NEW_BROKER=578, DISABLE_BROKER=579, ENABLE_BROKER=580, MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=581, 
129 		READ_COMMITTED_SNAPSHOT=582, ALLOW_SNAPSHOT_ISOLATION=583, RECURSIVE_TRIGGERS=584, 
130 		QUOTED_IDENTIFIER=585, NUMERIC_ROUNDABORT=586, CONCAT_NULL_YIELDS_NULL=587, 
131 		COMPATIBILITY_LEVEL=588, ARITHABORT=589, ANSI_WARNINGS=590, ANSI_PADDING=591, 
132 		ANSI_NULLS=592, ANSI_NULL_DEFAULT=593, PAGE_VERIFY=594, CHECKSUM=595, 
133 		TORN_PAGE_DETECTION=596, BULK_LOGGED=597, RECOVERY=598, TOTAL_EXECUTION_CPU_TIME_MS=599, 
134 		TOTAL_COMPILE_CPU_TIME_MS=600, STALE_CAPTURE_POLICY_THRESHOLD=601, EXECUTION_COUNT=602, 
135 		QUERY_CAPTURE_POLICY=603, WAIT_STATS_CAPTURE_MODE=604, MAX_PLANS_PER_QUERY=605, 
136 		QUERY_CAPTURE_MODE=606, SIZE_BASED_CLEANUP_MODE=607, INTERVAL_LENGTH_MINUTES=608, 
137 		MAX_STORAGE_SIZE_MB=609, DATA_FLUSH_INTERVAL_SECONDS=610, CLEANUP_POLICY=611, 
138 		CUSTOM=612, STALE_QUERY_THRESHOLD_DAYS=613, OPERATION_MODE=614, QUERY_STORE=615, 
139 		CURSOR_DEFAULT=616, GLOBAL=617, CURSOR_CLOSE_ON_COMMIT=618, HOURS=619, 
140 		CHANGE_RETENTION=620, AUTO_CLEANUP=621, CHANGE_TRACKING=622, AUTOMATIC_TUNING=623, 
141 		FORCE_LAST_GOOD_PLAN=624, AUTO_UPDATE_STATISTICS_ASYNC=625, AUTO_UPDATE_STATISTICS=626, 
142 		AUTO_SHRINK=627, AUTO_CREATE_STATISTICS=628, INCREMENTAL=629, AUTO_CLOSE=630, 
143 		DATA_RETENTION=631, TEMPORAL_HISTORY_RETENTION=632, EDITION=633, MIXED_PAGE_ALLOCATION=634, 
144 		DISABLED=635, ALLOWED=636, HADR=637, MULTI_USER=638, RESTRICTED_USER=639, 
145 		SINGLE_USER=640, OFFLINE=641, EMERGENCY=642, SUSPEND=643, DATE_CORRELATION_OPTIMIZATION=644, 
146 		ELASTIC_POOL=645, SERVICE_OBJECTIVE=646, DATABASE_NAME=647, ALLOW_CONNECTIONS=648, 
147 		GEO=649, NAMED=650, DATEFIRST=651, BACKUP_STORAGE_REDUNDANCY=652, FORCE_FAILOVER_ALLOW_DATA_LOSS=653, 
148 		SECONDARY=654, FAILOVER=655, DEFAULT_FULLTEXT_LANGUAGE=656, DEFAULT_LANGUAGE=657, 
149 		INLINE=658, NESTED_TRIGGERS=659, TRANSFORM_NOISE_WORDS=660, TWO_DIGIT_YEAR_CUTOFF=661, 
150 		PERSISTENT_LOG_BUFFER=662, DIRECTORY_NAME=663, DATEFORMAT=664, DELAYED_DURABILITY=665, 
151 		AUTHORIZATION=666, TRANSFER=667, EXPLAIN=668, WITH_RECOMMENDATIONS=669, 
152 		BATCH_SIZE=670, SETUSER=671, NORESET=672, DEFAULT_SCHEMA=673, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=674, 
153 		OLD_PASSWORD=675, PROVIDER=676, SID=677, UNCOMMITTED=678, COMMITTED=679, 
154 		STOPLIST=680, SEARCH=681, PROPERTY=682, LIST=683, SEND=684, MEMBER=685, 
155 		HASHED=686, MUST_CHANGE=687, DEFAULT_DATABASE=688, CHECK_EXPIRATION=689, 
156 		CHECK_POLICY=690, WINDOWS=691, UNLOCK=692, REVERT=693, COOKIE=694, BROWSE=695, 
157 		RAW=696, XMLDATA=697, XMLSCHEMA=698, ELEMENTS=699, XSINIL=700, ABSENT=701, 
158 		EXPLICIT=702, PATH=703, BASE64=704, ROOT=705, JSON=706, INCLUDE_NULL_VALUES=707, 
159 		WITHOUT_ARRAY_WRAPPER=708, XMLNAMESPACES=709, STATISTICS=710, FULLSCAN=711, 
160 		SAMPLE=712, RESAMPLE=713, NORECOMPUTE=714, AUTO_DROP=715, PERSIST_SAMPLE_PERCENT=716, 
161 		OPENJSON=717, OPENROWSET=718, TRY_CAST=719, TRY_CONVERT=720, IDENTIFIER_=721, 
162 		DELIMITED_IDENTIFIER_=722, STRING_=723, NUMBER_=724, INT_NUM_=725, FLOAT_NUM_=726, 
163 		DECIMAL_NUM_=727, HEX_DIGIT_=728, BIT_NUM_=729, NCHAR_TEXT=730, RESPECT=731, 
164 		IGNORE=732, NULLS=733;
165 	public static final int
166 		RULE_execute = 0, RULE_setTransaction = 1, RULE_isolationLevel = 2, RULE_setImplicitTransactions = 3, 
167 		RULE_implicitTransactionsValue = 4, RULE_beginTransaction = 5, RULE_beginDistributedTransaction = 6, 
168 		RULE_commit = 7, RULE_commitWork = 8, RULE_rollback = 9, RULE_rollbackWork = 10, 
169 		RULE_savepoint = 11, RULE_parameterMarker = 12, RULE_literals = 13, RULE_stringLiterals = 14, 
170 		RULE_numberLiterals = 15, RULE_dateTimeLiterals = 16, RULE_hexadecimalLiterals = 17, 
171 		RULE_bitValueLiterals = 18, RULE_booleanLiterals = 19, RULE_nullValueLiterals = 20, 
172 		RULE_identifier = 21, RULE_regularIdentifier = 22, RULE_delimitedIdentifier = 23, 
173 		RULE_unreservedWord = 24, RULE_databaseName = 25, RULE_schemaName = 26, 
174 		RULE_functionName = 27, RULE_procedureName = 28, RULE_viewName = 29, RULE_triggerName = 30, 
175 		RULE_sequenceName = 31, RULE_tableName = 32, RULE_queueName = 33, RULE_contractName = 34, 
176 		RULE_serviceName = 35, RULE_columnName = 36, RULE_scriptVariableName = 37, 
177 		RULE_owner = 38, RULE_name = 39, RULE_columnNames = 40, RULE_columnNamesWithSort = 41, 
178 		RULE_tableNames = 42, RULE_indexName = 43, RULE_constraintName = 44, RULE_collationName = 45, 
179 		RULE_alias = 46, RULE_dataTypeLength = 47, RULE_primaryKey = 48, RULE_expr = 49, 
180 		RULE_andOperator = 50, RULE_orOperator = 51, RULE_distinctFrom = 52, RULE_notOperator = 53, 
181 		RULE_booleanPrimary = 54, RULE_comparisonOperator = 55, RULE_predicate = 56, 
182 		RULE_bitExpr = 57, RULE_simpleExpr = 58, RULE_functionCall = 59, RULE_aggregationFunction = 60, 
183 		RULE_aggregationFunctionName = 61, RULE_distinct = 62, RULE_specialFunction = 63, 
184 		RULE_approxFunction = 64, RULE_conversionFunction = 65, RULE_castFunction = 66, 
185 		RULE_convertFunction = 67, RULE_jsonFunction = 68, RULE_jsonObjectFunction = 69, 
186 		RULE_jsonArrayFunction = 70, RULE_jsonKeyValue = 71, RULE_jsonNullClause = 72, 
187 		RULE_charFunction = 73, RULE_openJsonFunction = 74, RULE_openJsonWithclause = 75, 
188 		RULE_jsonColumnDefinition = 76, RULE_openRowSetFunction = 77, RULE_regularFunction = 78, 
189 		RULE_regularFunctionName = 79, RULE_caseExpression = 80, RULE_caseWhen = 81, 
190 		RULE_caseElse = 82, RULE_privateExprOfDb = 83, RULE_orderByClause = 84, 
191 		RULE_orderByItem = 85, RULE_dataType = 86, RULE_dataTypeName = 87, RULE_atTimeZoneExpr = 88, 
192 		RULE_castExpr = 89, RULE_convertExpr = 90, RULE_windowFunction = 91, RULE_nullTreatment = 92, 
193 		RULE_overClause = 93, RULE_partitionByClause = 94, RULE_rowRangeClause = 95, 
194 		RULE_windowFrameExtent = 96, RULE_windowFrameBetween = 97, RULE_windowFrameBound = 98, 
195 		RULE_windowFramePreceding = 99, RULE_windowFrameFollowing = 100, RULE_columnNameWithSort = 101, 
196 		RULE_indexOption = 102, RULE_compressionOption = 103, RULE_eqTime = 104, 
197 		RULE_eqOnOffOption = 105, RULE_eqKey = 106, RULE_eqOnOff = 107, RULE_onPartitionClause = 108, 
198 		RULE_partitionExpressions = 109, RULE_partitionExpression = 110, RULE_numberRange = 111, 
199 		RULE_lowPriorityLockWait = 112, RULE_onLowPriorLockWait = 113, RULE_ignoredIdentifier = 114, 
200 		RULE_ignoredIdentifiers = 115, RULE_matchNone = 116, RULE_variableName = 117, 
201 		RULE_executeAsClause = 118, RULE_transactionName = 119, RULE_transactionVariableName = 120, 
202 		RULE_savepointName = 121, RULE_savepointVariableName = 122, RULE_entityType = 123, 
203 		RULE_ifExists = 124, RULE_tableHintLimited = 125, RULE_call = 126, RULE_explain = 127, 
204 		RULE_explainableStatement = 128, RULE_createTable = 129, RULE_createTableClause = 130, 
205 		RULE_createIndex = 131, RULE_createDatabase = 132, RULE_createFunction = 133, 
206 		RULE_createProcedure = 134, RULE_createView = 135, RULE_createTrigger = 136, 
207 		RULE_createSequence = 137, RULE_createService = 138, RULE_createSchema = 139, 
208 		RULE_alterTable = 140, RULE_alterIndex = 141, RULE_alterDatabase = 142, 
209 		RULE_alterProcedure = 143, RULE_alterFunction = 144, RULE_alterView = 145, 
210 		RULE_alterTrigger = 146, RULE_alterSequence = 147, RULE_alterService = 148, 
211 		RULE_alterSchema = 149, RULE_dropTable = 150, RULE_dropIndex = 151, RULE_dropDatabase = 152, 
212 		RULE_dropFunction = 153, RULE_dropProcedure = 154, RULE_dropView = 155, 
213 		RULE_dropTrigger = 156, RULE_dropSequence = 157, RULE_dropService = 158, 
214 		RULE_dropSchema = 159, RULE_truncateTable = 160, RULE_updateStatistics = 161, 
215 		RULE_statisticsWithClause = 162, RULE_sampleOption = 163, RULE_statisticsOptions = 164, 
216 		RULE_statisticsOption = 165, RULE_fileTableClause = 166, RULE_createDefinitionClause = 167, 
217 		RULE_createTableDefinitions = 168, RULE_createTableDefinition = 169, RULE_columnDefinition = 170, 
218 		RULE_columnDefinitionOption = 171, RULE_encryptedOptions = 172, RULE_columnConstraint = 173, 
219 		RULE_computedColumnConstraint = 174, RULE_computedColumnForeignKeyConstraint = 175, 
220 		RULE_computedColumnForeignKeyOnAction = 176, RULE_primaryKeyConstraint = 177, 
221 		RULE_diskTablePrimaryKeyConstraintOption = 178, RULE_clusterOption = 179, 
222 		RULE_primaryKeyWithClause = 180, RULE_primaryKeyOnClause = 181, RULE_onSchemaColumn = 182, 
223 		RULE_onFileGroup = 183, RULE_onString = 184, RULE_memoryTablePrimaryKeyConstraintOption = 185, 
224 		RULE_withBucket = 186, RULE_columnForeignKeyConstraint = 187, RULE_foreignKeyOnAction = 188, 
225 		RULE_foreignKeyOn = 189, RULE_checkConstraint = 190, RULE_columnIndex = 191, 
226 		RULE_withIndexOption = 192, RULE_indexOnClause = 193, RULE_onDefault = 194, 
227 		RULE_fileStreamOn = 195, RULE_columnConstraints = 196, RULE_computedColumnDefinition = 197, 
228 		RULE_columnSetDefinition = 198, RULE_tableConstraint = 199, RULE_tablePrimaryConstraint = 200, 
229 		RULE_primaryKeyUnique = 201, RULE_diskTablePrimaryConstraintOption = 202, 
230 		RULE_memoryTablePrimaryConstraintOption = 203, RULE_hashWithBucket = 204, 
231 		RULE_tableForeignKeyConstraint = 205, RULE_tableIndex = 206, RULE_indexNameOption = 207, 
232 		RULE_indexOptions = 208, RULE_periodClause = 209, RULE_partitionScheme = 210, 
233 		RULE_fileGroup = 211, RULE_tableOptions = 212, RULE_tableOption = 213, 
234 		RULE_dataDelectionOption = 214, RULE_tableStretchOptions = 215, RULE_tableStretchOption = 216, 
235 		RULE_migrationState_ = 217, RULE_tableOperationOption = 218, RULE_distributionOption = 219, 
236 		RULE_dataWareHouseTableOption = 220, RULE_dataWareHousePartitionOption = 221, 
237 		RULE_createIndexSpecification = 222, RULE_alterDefinitionClause = 223, 
238 		RULE_addColumnSpecification = 224, RULE_modifyColumnSpecification = 225, 
239 		RULE_alterColumnOperation = 226, RULE_alterColumnAddOptions = 227, RULE_alterColumnAddOption = 228, 
240 		RULE_constraintForColumn = 229, RULE_generatedColumnNamesClause = 230, 
241 		RULE_generatedColumnNameClause = 231, RULE_generatedColumnName = 232, 
242 		RULE_alterDrop = 233, RULE_alterTableDropConstraint = 234, RULE_dropConstraintName = 235, 
243 		RULE_dropConstraintWithClause = 236, RULE_dropConstraintOption = 237, 
244 		RULE_onOffOption = 238, RULE_dropColumnSpecification = 239, RULE_dropIndexSpecification = 240, 
245 		RULE_alterCheckConstraint = 241, RULE_alterTableTrigger = 242, RULE_alterSwitch = 243, 
246 		RULE_alterSet = 244, RULE_setFileStreamClause = 245, RULE_setSystemVersionClause = 246, 
247 		RULE_alterSetOnClause = 247, RULE_dataConsistencyCheckClause = 248, RULE_historyRetentionPeriodClause = 249, 
248 		RULE_historyRetentionPeriod = 250, RULE_alterTableTableIndex = 251, RULE_indexWithName = 252, 
249 		RULE_indexNonClusterClause = 253, RULE_alterTableIndexOnClause = 254, 
250 		RULE_indexClusterClause = 255, RULE_alterTableOption = 256, RULE_onHistoryTableClause = 257, 
251 		RULE_createDatabaseClause = 258, RULE_fileDefinitionClause = 259, RULE_databaseOption = 260, 
252 		RULE_fileStreamOption = 261, RULE_fileSpec = 262, RULE_databaseFileSpecOption = 263, 
253 		RULE_databaseFileGroup = 264, RULE_databaseFileGroupContains = 265, RULE_databaseLogOns = 266, 
254 		RULE_declareVariable = 267, RULE_variable = 268, RULE_tableVariable = 269, 
255 		RULE_variTableTypeDefinition = 270, RULE_tableVariableClause = 271, RULE_variableTableColumnDefinition = 272, 
256 		RULE_variableTableColumnConstraint = 273, RULE_variableTableConstraint = 274, 
257 		RULE_setVariable = 275, RULE_setVariableClause = 276, RULE_cursorVariable = 277, 
258 		RULE_cursorClause = 278, RULE_compoundOperation = 279, RULE_funcParameters = 280, 
259 		RULE_funcReturns = 281, RULE_funcMutiReturn = 282, RULE_funcInlineReturn = 283, 
260 		RULE_funcScalarReturn = 284, RULE_tableTypeDefinition = 285, RULE_compoundStatement = 286, 
261 		RULE_functionOption = 287, RULE_validStatement = 288, RULE_procParameters = 289, 
262 		RULE_procParameter = 290, RULE_createOrAlterProcClause = 291, RULE_withCreateProcOption = 292, 
263 		RULE_procOption = 293, RULE_procAsClause = 294, RULE_procSetOption = 295, 
264 		RULE_createOrAlterViewClause = 296, RULE_viewAttribute = 297, RULE_withCommonTableExpr = 298, 
265 		RULE_commonTableExpr = 299, RULE_createTriggerClause = 300, RULE_dmlTriggerOption = 301, 
266 		RULE_methodSpecifier = 302, RULE_triggerTarget = 303, RULE_createOrAlterSequenceClause = 304, 
267 		RULE_createIndexClause = 305, RULE_filterPredicate = 306, RULE_conjunct = 307, 
268 		RULE_alterIndexClause = 308, RULE_relationalIndexOption = 309, RULE_partitionNumberRange = 310, 
269 		RULE_reorganizeOption = 311, RULE_setIndexOption = 312, RULE_resumableIndexOptions = 313, 
270 		RULE_alterDatabaseClause = 314, RULE_addSecondaryOption = 315, RULE_editionOptions = 316, 
271 		RULE_serviceObjective = 317, RULE_alterDatabaseOptionSpec = 318, RULE_fileAndFilegroupOptions = 319, 
272 		RULE_addOrModifyFilegroups = 320, RULE_filegroupUpdatabilityOption = 321, 
273 		RULE_addOrModifyFiles = 322, RULE_acceleratedDatabaseRecovery = 323, RULE_autoOption = 324, 
274 		RULE_automaticTuningOption = 325, RULE_changeTrackingOption = 326, RULE_changeTrackingOptionList = 327, 
275 		RULE_cursorOption = 328, RULE_externalAccessOption = 329, RULE_queryStoreOptions = 330, 
276 		RULE_queryStoreOptionList = 331, RULE_queryCapturePolicyOptionList = 332, 
277 		RULE_recoveryOption = 333, RULE_sqlOption = 334, RULE_snapshotOption = 335, 
278 		RULE_serviceBrokerOption = 336, RULE_targetRecoveryTimeOption = 337, RULE_termination = 338, 
279 		RULE_createServiceClause = 339, RULE_alterServiceClause = 340, RULE_alterServiceOptArg = 341, 
280 		RULE_schemaNameClause = 342, RULE_schemaElement = 343, RULE_createTableAsSelectClause = 344, 
281 		RULE_createTableAsSelect = 345, RULE_createRemoteTableAsSelect = 346, 
282 		RULE_withDistributionOption = 347, RULE_optionQueryHintClause = 348, RULE_insert = 349, 
283 		RULE_insertDefaultValue = 350, RULE_insertValuesClause = 351, RULE_insertSelectClause = 352, 
284 		RULE_insertExecClause = 353, RULE_withTableHint = 354, RULE_exec = 355, 
285 		RULE_update = 356, RULE_assignment = 357, RULE_setAssignmentsClause = 358, 
286 		RULE_assignmentValues = 359, RULE_assignmentValue = 360, RULE_delete = 361, 
287 		RULE_optionHint = 362, RULE_singleTableClause = 363, RULE_multipleTablesClause = 364, 
288 		RULE_multipleTableNames = 365, RULE_select = 366, RULE_aggregationClause = 367, 
289 		RULE_selectClause = 368, RULE_duplicateSpecification = 369, RULE_projections = 370, 
290 		RULE_projection = 371, RULE_top = 372, RULE_topNum = 373, RULE_unqualifiedShorthand = 374, 
291 		RULE_qualifiedShorthand = 375, RULE_intoClause = 376, RULE_fromClause = 377, 
292 		RULE_tableReferences = 378, RULE_tableReference = 379, RULE_tableFactor = 380, 
293 		RULE_joinedTable = 381, RULE_joinSpecification = 382, RULE_whereClause = 383, 
294 		RULE_groupByClause = 384, RULE_havingClause = 385, RULE_subquery = 386, 
295 		RULE_withClause = 387, RULE_cteClauseSet = 388, RULE_cteClause = 389, 
296 		RULE_outputClause = 390, RULE_outputWithColumns = 391, RULE_outputWithColumn = 392, 
297 		RULE_outputWithAaterisk = 393, RULE_outputTableName = 394, RULE_queryHint = 395, 
298 		RULE_useHitName = 396, RULE_forClause = 397, RULE_forXmlClause = 398, 
299 		RULE_commonDirectivesForXml = 399, RULE_forJsonClause = 400, RULE_selectWithClause = 401, 
300 		RULE_xmlNamespacesClause = 402, RULE_xmlNamespaceDeclarationItem = 403, 
301 		RULE_xmlNamespaceUri = 404, RULE_xmlNamespacePrefix = 405, RULE_xmlDefaultNamespaceDeclarationItem = 406, 
302 		RULE_grant = 407, RULE_grantClassPrivilegesClause = 408, RULE_grantClassTypePrivilegesClause = 409, 
303 		RULE_classPrivileges = 410, RULE_onClassClause = 411, RULE_classTypePrivileges = 412, 
304 		RULE_onClassTypeClause = 413, RULE_securable = 414, RULE_principal = 415, 
305 		RULE_revoke = 416, RULE_revokeClassPrivilegesClause = 417, RULE_revokeClassTypePrivilegesClause = 418, 
306 		RULE_deny = 419, RULE_denyClassPrivilegesClause = 420, RULE_denyClassTypePrivilegesClause = 421, 
307 		RULE_optionForClause = 422, RULE_privilegeType = 423, RULE_objectPermission = 424, 
308 		RULE_serverPermission = 425, RULE_serverPrincipalPermission = 426, RULE_databasePermission = 427, 
309 		RULE_databasePrincipalPermission = 428, RULE_databaseUserPermission = 429, 
310 		RULE_databaseRolePermission = 430, RULE_applicationRolePermission = 431, 
311 		RULE_databaseScopedCredentialPermission = 432, RULE_schemaPermission = 433, 
312 		RULE_searchPropertyListPermission = 434, RULE_serviceBrokerPermission = 435, 
313 		RULE_serviceBrokerContractsPermission = 436, RULE_serviceBrokerMessageTypesPermission = 437, 
314 		RULE_serviceBrokerRemoteServiceBindingsPermission = 438, RULE_serviceBrokerRoutesPermission = 439, 
315 		RULE_serviceBrokerServicesPermission = 440, RULE_endpointPermission = 441, 
316 		RULE_certificatePermission = 442, RULE_symmetricKeyPermission = 443, RULE_asymmetricKeyPermission = 444, 
317 		RULE_assemblyPermission = 445, RULE_availabilityGroupPermission = 446, 
318 		RULE_fullTextPermission = 447, RULE_fullTextCatalogPermission = 448, RULE_fullTextStoplistPermission = 449, 
319 		RULE_typePermission = 450, RULE_xmlSchemaCollectionPermission = 451, RULE_systemObjectPermission = 452, 
320 		RULE_class_ = 453, RULE_classItem = 454, RULE_classType = 455, RULE_roleClause = 456, 
321 		RULE_setUser = 457, RULE_createUser = 458, RULE_createUserLoginClause = 459, 
322 		RULE_createUserWindowsPrincipalClause = 460, RULE_createUserLoginWindowsPrincipalClause = 461, 
323 		RULE_createUserWithoutLoginClause = 462, RULE_optionsList = 463, RULE_limitedOptionsList = 464, 
324 		RULE_createUserFromExternalProviderClause = 465, RULE_createUserWithDefaultSchema = 466, 
325 		RULE_createUserWithAzureActiveDirectoryPrincipalClause = 467, RULE_windowsPrincipal = 468, 
326 		RULE_azureActiveDirectoryPrincipal = 469, RULE_userName = 470, RULE_ignoredNameIdentifier = 471, 
327 		RULE_dropUser = 472, RULE_alterUser = 473, RULE_setItem = 474, RULE_createRole = 475, 
328 		RULE_dropRole = 476, RULE_alterRole = 477, RULE_createLogin = 478, RULE_createLoginForSQLServerClause = 479, 
329 		RULE_createLoginForSQLServerOptionList = 480, RULE_createLoginForSQLServerOptionListClause = 481, 
330 		RULE_hashedPassword = 482, RULE_sid = 483, RULE_sources = 484, RULE_windowsOptions = 485, 
331 		RULE_createLoginForAzureSQLDatabaseClause = 486, RULE_createLoginForAzureSQLDatabaseOptionList = 487, 
332 		RULE_createLoginForAzureManagedInstanceClause = 488, RULE_azureManagedInstanceOptionList = 489, 
333 		RULE_createLoginForAzureSynapseAnalyticsClause = 490, RULE_createLoginForAzureSynapseAnalyticsOptionList = 491, 
334 		RULE_createLoginForAnalyticsPlatformSystemClause = 492, RULE_createLoginForAnalyticsPlatformSystemOptionList = 493, 
335 		RULE_createLoginForAnalyticsPlatformSystemOptionListClause = 494, RULE_dropLogin = 495, 
336 		RULE_alterLogin = 496, RULE_statusOptionClause = 497, RULE_setOptionClause = 498, 
337 		RULE_passwordOptionClause = 499, RULE_cryptographicCredentialsOptionClause = 500, 
338 		RULE_revert = 501;
339 	private static String[] makeRuleNames() {
340 		return new String[] {
341 			"execute", "setTransaction", "isolationLevel", "setImplicitTransactions", 
342 			"implicitTransactionsValue", "beginTransaction", "beginDistributedTransaction", 
343 			"commit", "commitWork", "rollback", "rollbackWork", "savepoint", "parameterMarker", 
344 			"literals", "stringLiterals", "numberLiterals", "dateTimeLiterals", "hexadecimalLiterals", 
345 			"bitValueLiterals", "booleanLiterals", "nullValueLiterals", "identifier", 
346 			"regularIdentifier", "delimitedIdentifier", "unreservedWord", "databaseName", 
347 			"schemaName", "functionName", "procedureName", "viewName", "triggerName", 
348 			"sequenceName", "tableName", "queueName", "contractName", "serviceName", 
349 			"columnName", "scriptVariableName", "owner", "name", "columnNames", "columnNamesWithSort", 
350 			"tableNames", "indexName", "constraintName", "collationName", "alias", 
351 			"dataTypeLength", "primaryKey", "expr", "andOperator", "orOperator", 
352 			"distinctFrom", "notOperator", "booleanPrimary", "comparisonOperator", 
353 			"predicate", "bitExpr", "simpleExpr", "functionCall", "aggregationFunction", 
354 			"aggregationFunctionName", "distinct", "specialFunction", "approxFunction", 
355 			"conversionFunction", "castFunction", "convertFunction", "jsonFunction", 
356 			"jsonObjectFunction", "jsonArrayFunction", "jsonKeyValue", "jsonNullClause", 
357 			"charFunction", "openJsonFunction", "openJsonWithclause", "jsonColumnDefinition", 
358 			"openRowSetFunction", "regularFunction", "regularFunctionName", "caseExpression", 
359 			"caseWhen", "caseElse", "privateExprOfDb", "orderByClause", "orderByItem", 
360 			"dataType", "dataTypeName", "atTimeZoneExpr", "castExpr", "convertExpr", 
361 			"windowFunction", "nullTreatment", "overClause", "partitionByClause", 
362 			"rowRangeClause", "windowFrameExtent", "windowFrameBetween", "windowFrameBound", 
363 			"windowFramePreceding", "windowFrameFollowing", "columnNameWithSort", 
364 			"indexOption", "compressionOption", "eqTime", "eqOnOffOption", "eqKey", 
365 			"eqOnOff", "onPartitionClause", "partitionExpressions", "partitionExpression", 
366 			"numberRange", "lowPriorityLockWait", "onLowPriorLockWait", "ignoredIdentifier", 
367 			"ignoredIdentifiers", "matchNone", "variableName", "executeAsClause", 
368 			"transactionName", "transactionVariableName", "savepointName", "savepointVariableName", 
369 			"entityType", "ifExists", "tableHintLimited", "call", "explain", "explainableStatement", 
370 			"createTable", "createTableClause", "createIndex", "createDatabase", 
371 			"createFunction", "createProcedure", "createView", "createTrigger", "createSequence", 
372 			"createService", "createSchema", "alterTable", "alterIndex", "alterDatabase", 
373 			"alterProcedure", "alterFunction", "alterView", "alterTrigger", "alterSequence", 
374 			"alterService", "alterSchema", "dropTable", "dropIndex", "dropDatabase", 
375 			"dropFunction", "dropProcedure", "dropView", "dropTrigger", "dropSequence", 
376 			"dropService", "dropSchema", "truncateTable", "updateStatistics", "statisticsWithClause", 
377 			"sampleOption", "statisticsOptions", "statisticsOption", "fileTableClause", 
378 			"createDefinitionClause", "createTableDefinitions", "createTableDefinition", 
379 			"columnDefinition", "columnDefinitionOption", "encryptedOptions", "columnConstraint", 
380 			"computedColumnConstraint", "computedColumnForeignKeyConstraint", "computedColumnForeignKeyOnAction", 
381 			"primaryKeyConstraint", "diskTablePrimaryKeyConstraintOption", "clusterOption", 
382 			"primaryKeyWithClause", "primaryKeyOnClause", "onSchemaColumn", "onFileGroup", 
383 			"onString", "memoryTablePrimaryKeyConstraintOption", "withBucket", "columnForeignKeyConstraint", 
384 			"foreignKeyOnAction", "foreignKeyOn", "checkConstraint", "columnIndex", 
385 			"withIndexOption", "indexOnClause", "onDefault", "fileStreamOn", "columnConstraints", 
386 			"computedColumnDefinition", "columnSetDefinition", "tableConstraint", 
387 			"tablePrimaryConstraint", "primaryKeyUnique", "diskTablePrimaryConstraintOption", 
388 			"memoryTablePrimaryConstraintOption", "hashWithBucket", "tableForeignKeyConstraint", 
389 			"tableIndex", "indexNameOption", "indexOptions", "periodClause", "partitionScheme", 
390 			"fileGroup", "tableOptions", "tableOption", "dataDelectionOption", "tableStretchOptions", 
391 			"tableStretchOption", "migrationState_", "tableOperationOption", "distributionOption", 
392 			"dataWareHouseTableOption", "dataWareHousePartitionOption", "createIndexSpecification", 
393 			"alterDefinitionClause", "addColumnSpecification", "modifyColumnSpecification", 
394 			"alterColumnOperation", "alterColumnAddOptions", "alterColumnAddOption", 
395 			"constraintForColumn", "generatedColumnNamesClause", "generatedColumnNameClause", 
396 			"generatedColumnName", "alterDrop", "alterTableDropConstraint", "dropConstraintName", 
397 			"dropConstraintWithClause", "dropConstraintOption", "onOffOption", "dropColumnSpecification", 
398 			"dropIndexSpecification", "alterCheckConstraint", "alterTableTrigger", 
399 			"alterSwitch", "alterSet", "setFileStreamClause", "setSystemVersionClause", 
400 			"alterSetOnClause", "dataConsistencyCheckClause", "historyRetentionPeriodClause", 
401 			"historyRetentionPeriod", "alterTableTableIndex", "indexWithName", "indexNonClusterClause", 
402 			"alterTableIndexOnClause", "indexClusterClause", "alterTableOption", 
403 			"onHistoryTableClause", "createDatabaseClause", "fileDefinitionClause", 
404 			"databaseOption", "fileStreamOption", "fileSpec", "databaseFileSpecOption", 
405 			"databaseFileGroup", "databaseFileGroupContains", "databaseLogOns", "declareVariable", 
406 			"variable", "tableVariable", "variTableTypeDefinition", "tableVariableClause", 
407 			"variableTableColumnDefinition", "variableTableColumnConstraint", "variableTableConstraint", 
408 			"setVariable", "setVariableClause", "cursorVariable", "cursorClause", 
409 			"compoundOperation", "funcParameters", "funcReturns", "funcMutiReturn", 
410 			"funcInlineReturn", "funcScalarReturn", "tableTypeDefinition", "compoundStatement", 
411 			"functionOption", "validStatement", "procParameters", "procParameter", 
412 			"createOrAlterProcClause", "withCreateProcOption", "procOption", "procAsClause", 
413 			"procSetOption", "createOrAlterViewClause", "viewAttribute", "withCommonTableExpr", 
414 			"commonTableExpr", "createTriggerClause", "dmlTriggerOption", "methodSpecifier", 
415 			"triggerTarget", "createOrAlterSequenceClause", "createIndexClause", 
416 			"filterPredicate", "conjunct", "alterIndexClause", "relationalIndexOption", 
417 			"partitionNumberRange", "reorganizeOption", "setIndexOption", "resumableIndexOptions", 
418 			"alterDatabaseClause", "addSecondaryOption", "editionOptions", "serviceObjective", 
419 			"alterDatabaseOptionSpec", "fileAndFilegroupOptions", "addOrModifyFilegroups", 
420 			"filegroupUpdatabilityOption", "addOrModifyFiles", "acceleratedDatabaseRecovery", 
421 			"autoOption", "automaticTuningOption", "changeTrackingOption", "changeTrackingOptionList", 
422 			"cursorOption", "externalAccessOption", "queryStoreOptions", "queryStoreOptionList", 
423 			"queryCapturePolicyOptionList", "recoveryOption", "sqlOption", "snapshotOption", 
424 			"serviceBrokerOption", "targetRecoveryTimeOption", "termination", "createServiceClause", 
425 			"alterServiceClause", "alterServiceOptArg", "schemaNameClause", "schemaElement", 
426 			"createTableAsSelectClause", "createTableAsSelect", "createRemoteTableAsSelect", 
427 			"withDistributionOption", "optionQueryHintClause", "insert", "insertDefaultValue", 
428 			"insertValuesClause", "insertSelectClause", "insertExecClause", "withTableHint", 
429 			"exec", "update", "assignment", "setAssignmentsClause", "assignmentValues", 
430 			"assignmentValue", "delete", "optionHint", "singleTableClause", "multipleTablesClause", 
431 			"multipleTableNames", "select", "aggregationClause", "selectClause", 
432 			"duplicateSpecification", "projections", "projection", "top", "topNum", 
433 			"unqualifiedShorthand", "qualifiedShorthand", "intoClause", "fromClause", 
434 			"tableReferences", "tableReference", "tableFactor", "joinedTable", "joinSpecification", 
435 			"whereClause", "groupByClause", "havingClause", "subquery", "withClause", 
436 			"cteClauseSet", "cteClause", "outputClause", "outputWithColumns", "outputWithColumn", 
437 			"outputWithAaterisk", "outputTableName", "queryHint", "useHitName", "forClause", 
438 			"forXmlClause", "commonDirectivesForXml", "forJsonClause", "selectWithClause", 
439 			"xmlNamespacesClause", "xmlNamespaceDeclarationItem", "xmlNamespaceUri", 
440 			"xmlNamespacePrefix", "xmlDefaultNamespaceDeclarationItem", "grant", 
441 			"grantClassPrivilegesClause", "grantClassTypePrivilegesClause", "classPrivileges", 
442 			"onClassClause", "classTypePrivileges", "onClassTypeClause", "securable", 
443 			"principal", "revoke", "revokeClassPrivilegesClause", "revokeClassTypePrivilegesClause", 
444 			"deny", "denyClassPrivilegesClause", "denyClassTypePrivilegesClause", 
445 			"optionForClause", "privilegeType", "objectPermission", "serverPermission", 
446 			"serverPrincipalPermission", "databasePermission", "databasePrincipalPermission", 
447 			"databaseUserPermission", "databaseRolePermission", "applicationRolePermission", 
448 			"databaseScopedCredentialPermission", "schemaPermission", "searchPropertyListPermission", 
449 			"serviceBrokerPermission", "serviceBrokerContractsPermission", "serviceBrokerMessageTypesPermission", 
450 			"serviceBrokerRemoteServiceBindingsPermission", "serviceBrokerRoutesPermission", 
451 			"serviceBrokerServicesPermission", "endpointPermission", "certificatePermission", 
452 			"symmetricKeyPermission", "asymmetricKeyPermission", "assemblyPermission", 
453 			"availabilityGroupPermission", "fullTextPermission", "fullTextCatalogPermission", 
454 			"fullTextStoplistPermission", "typePermission", "xmlSchemaCollectionPermission", 
455 			"systemObjectPermission", "class_", "classItem", "classType", "roleClause", 
456 			"setUser", "createUser", "createUserLoginClause", "createUserWindowsPrincipalClause", 
457 			"createUserLoginWindowsPrincipalClause", "createUserWithoutLoginClause", 
458 			"optionsList", "limitedOptionsList", "createUserFromExternalProviderClause", 
459 			"createUserWithDefaultSchema", "createUserWithAzureActiveDirectoryPrincipalClause", 
460 			"windowsPrincipal", "azureActiveDirectoryPrincipal", "userName", "ignoredNameIdentifier", 
461 			"dropUser", "alterUser", "setItem", "createRole", "dropRole", "alterRole", 
462 			"createLogin", "createLoginForSQLServerClause", "createLoginForSQLServerOptionList", 
463 			"createLoginForSQLServerOptionListClause", "hashedPassword", "sid", "sources", 
464 			"windowsOptions", "createLoginForAzureSQLDatabaseClause", "createLoginForAzureSQLDatabaseOptionList", 
465 			"createLoginForAzureManagedInstanceClause", "azureManagedInstanceOptionList", 
466 			"createLoginForAzureSynapseAnalyticsClause", "createLoginForAzureSynapseAnalyticsOptionList", 
467 			"createLoginForAnalyticsPlatformSystemClause", "createLoginForAnalyticsPlatformSystemOptionList", 
468 			"createLoginForAnalyticsPlatformSystemOptionListClause", "dropLogin", 
469 			"alterLogin", "statusOptionClause", "setOptionClause", "passwordOptionClause", 
470 			"cryptographicCredentialsOptionClause", "revert"
471 		};
472 	}
473 	public static final String[] ruleNames = makeRuleNames();
474 
475 	private static String[] makeLiteralNames() {
476 		return new String[] {
477 			null, "'Default does not match anything'", null, null, "'&&'", "'||'", 
478 			"'!'", "'~'", "'|'", "'&'", "'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", 
479 			"'-'", "'*'", "'/'", "'\\'", "'.'", "'.*'", "'<=>'", "'=='", "'='", null, 
480 			"'>'", "'>='", "'<'", "'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", 
481 			"']'", "','", "'\"'", "'''", "'`'", "'?'", "'@'", "';'", "'$'", null, 
482 			null, null, null, null, null, null, null, null, null, null, null, null, 
483 			null, null, null, null, null, null, null, null, null, null, null, null, 
484 			null, null, null, null, null, null, null, null, null, null, null, null, 
485 			null, null, null, null, null, null, null, null, null, null, null, null, 
486 			null, null, null, null, null, null, null, null, null, null, null, null, 
487 			null, null, null, null, null, null, null, null, null, null, null, null, 
488 			null, null, null, null, null, null, null, null, null, null, null, null, 
489 			null, null, null, null, null, null, null, null, null, null, null, null, 
490 			null, null, null, null, null, null, null, null, null, null, null, null, 
491 			null, null, null, null, null, null, null, null, null, null, null, null, 
492 			null, null, null, null, null, null, null, null, null, null, null, null, 
493 			null, null, null, null, null, null, null, null, null, null, null, null, 
494 			null, null, null, null, null, null, null, null, null, null, null, null, 
495 			null, null, null, null, null, null, null, null, null, null, null, null, 
496 			null, null, null, null, null, null, null, null, null, null, null, null, 
497 			null, null, null, null, null, null, null, null, null, null, null, null, 
498 			null, null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'"
499 		};
500 	}
501 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
502 	private static String[] makeSymbolicNames() {
503 		return new String[] {
504 			null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
505 			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
506 			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
507 			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "NEQ_", 
508 			"GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", "RBE_", 
509 			"LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "AT_", "SEMI_", 
510 			"DOLLAR_", "WS", "SELECT", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", 
511 			"DROP", "TRUNCATE", "SCHEMA", "GRANT", "REVOKE", "ADD", "SET", "TABLE", 
512 			"COLUMN", "COLUMNS", "INDEX", "CONSTRAINT", "PRIMARY", "UNIQUE", "FOREIGN", 
513 			"KEY", "POSITION", "PRECISION", "FUNCTION", "TRIGGER", "PROCEDURE", "PROC", 
514 			"VIEW", "INTO", "VALUES", "WITH", "UNION", "DISTINCT", "CASE", "WHEN", 
515 			"CAST", "TRIM", "SUBSTRING", "FROM", "NATURAL", "JOIN", "FULL", "INNER", 
516 			"OUTER", "LEFT", "RIGHT", "CROSS", "USING", "WHERE", "AS", "ON", "OFF", 
517 			"IF", "ELSE", "THEN", "FOR", "TO", "AND", "OR", "IS", "NOT", "NULL", 
518 			"TRUE", "FALSE", "EXISTS", "BETWEEN", "IN", "ALL", "ANY", "LIKE", "ORDER", 
519 			"GROUP", "BY", "ASC", "DESC", "HAVING", "LIMIT", "OFFSET", "BEGIN", "COMMIT", 
520 			"ROLLBACK", "SAVEPOINT", "BOOLEAN", "DOUBLE", "CHAR", "CHARACTER", "ARRAY", 
521 			"INTERVAL", "DATE", "TIME", "TIMESTAMP", "LOCALTIME", "LOCALTIMESTAMP", 
522 			"YEAR", "QUARTER", "MONTH", "WEEK", "DAY", "HOUR", "MINUTE", "SECOND", 
523 			"MICROSECOND", "MAX", "MIN", "SUM", "COUNT", "AVG", "DEFAULT", "CURRENT", 
524 			"ENABLE", "DISABLE", "CALL", "INSTANCE", "PRESERVE", "DO", "DEFINER", 
525 			"CURRENT_USER", "SQL", "CASCADED", "LOCAL", "CLOSE", "OPEN", "NEXT", 
526 			"NAME", "COLLATION", "NAMES", "INTEGER", "REAL", "DECIMAL", "TYPE", "BIT", 
527 			"SMALLINT", "INT", "TINYINT", "NUMERIC", "FLOAT", "BIGINT", "TEXT", "VARCHAR", 
528 			"PERCENT", "TIES", "EXCEPT", "INTERSECT", "USE", "MERGE", "LOOP", "EXPAND", 
529 			"VIEWS", "FAST", "FORCE", "KEEP", "PLAN", "OPTIMIZE", "SIMPLE", "FORCED", 
530 			"HINT", "READ_ONLY", "DATABASE", "DECLARE", "CURSOR", "OF", "RETURNS", 
531 			"DATEPART", "RETURN", "READONLY", "AT", "PASSWORD", "WITHOUT", "APPLY", 
532 			"KEEPIDENTITY", "KEEPDEFAULTS", "HOLDLOCK", "IGNORE_CONSTRAINTS", "IGNORE_TRIGGERS", 
533 			"NOLOCK", "NOWAIT", "PAGLOCK", "READCOMMITTED", "READCOMMITTEDLOCK", 
534 			"READPAST", "REPEATABLEREAD", "ROWLOCK", "TABLOCK", "TABLOCKX", "UPDLOCK", 
535 			"XLOCK", "JSON_OBJECT", "JSON_ARRAY", "FIRST_VALUE", "LAST_VALUE", "APPROX_PERCENTILE_CONT", 
536 			"APPROX_PERCENTILE_DISC", "WITHIN", "FOR_GENERATOR", "BINARY", "ESCAPE", 
537 			"HIDDEN_", "MOD", "PARTITION", "PARTITIONS", "TOP", "ROW", "ROWS", "UNKNOWN", 
538 			"XOR", "ALWAYS", "CASCADE", "CHECK", "GENERATED", "NO", "OPTION", "PRIVILEGES", 
539 			"REFERENCES", "USER", "ROLE", "START", "TRANSACTION", "ACTION", "ALGORITHM", 
540 			"AUTO", "BLOCKERS", "CLUSTERED", "NONCLUSTERED", "COLLATE", "COLUMNSTORE", 
541 			"CONTENT", "CONVERT", "YEARS", "MONTHS", "WEEKS", "DAYS", "MINUTES", 
542 			"DENY", "DETERMINISTIC", "DISTRIBUTION", "DOCUMENT", "DURABILITY", "ENCRYPTED", 
543 			"END", "FILESTREAM", "FILETABLE", "FILLFACTOR", "FOLLOWING", "HASH", 
544 			"HEAP", "IDENTITY", "INBOUND", "OUTBOUND", "UNBOUNDED", "INFINITE", "LOGIN", 
545 			"MASKED", "MAXDOP", "MOVE", "NOCHECK", "NONE", "OBJECT", "ONLINE", "OVER", 
546 			"PAGE", "PAUSED", "PERIOD", "PERSISTED", "PRECEDING", "RANDOMIZED", "RANGE", 
547 			"REBUILD", "REPLICATE", "REPLICATION", "RESUMABLE", "ROWGUIDCOL", "SAVE", 
548 			"SELF", "SPARSE", "SWITCH", "TRAN", "TRANCOUNT", "ZONE", "EXECUTE", "EXEC", 
549 			"SESSION", "CONNECT", "CONNECTION", "CATALOG", "CONTROL", "CONCAT", "TAKE", 
550 			"OWNERSHIP", "DEFINITION", "APPLICATION", "ASSEMBLY", "SYMMETRIC", "ASYMMETRIC", 
551 			"SERVER", "RECEIVE", "CHANGE", "TRACE", "TRACKING", "RESOURCES", "SETTINGS", 
552 			"STATE", "AVAILABILITY", "CREDENTIAL", "ENDPOINT", "EVENT", "NOTIFICATION", 
553 			"LINKED", "AUDIT", "DDL", "XML", "IMPERSONATE", "SECURABLES", "AUTHENTICATE", 
554 			"EXTERNAL", "ACCESS", "ADMINISTER", "BULK", "OPERATIONS", "UNSAFE", "SHUTDOWN", 
555 			"SCOPED", "CONFIGURATION", "DATASPACE", "SERVICE", "CERTIFICATE", "CONTRACT", 
556 			"ENCRYPTION", "MASTER", "DATA", "SOURCE", "FILE", "FORMAT", "LIBRARY", 
557 			"FULLTEXT", "MASK", "UNMASK", "MESSAGE", "REMOTE", "BINDING", "ROUTE", 
558 			"SECURITY", "POLICY", "AGGREGATE", "QUEUE", "RULE", "SYNONYM", "COLLECTION", 
559 			"SCRIPT", "KILL", "BACKUP", "LOG", "SHOWPLAN", "SUBSCRIBE", "QUERY", 
560 			"NOTIFICATIONS", "CHECKPOINT", "SEQUENCE", "ABORT_AFTER_WAIT", "ALLOW_PAGE_LOCKS", 
561 			"ALLOW_ROW_LOCKS", "ALL_SPARSE_COLUMNS", "BUCKET_COUNT", "COLUMNSTORE_ARCHIVE", 
562 			"COLUMN_ENCRYPTION_KEY", "COLUMN_SET", "COMPRESSION_DELAY", "DATABASE_DEAULT", 
563 			"DATA_COMPRESSION", "DATA_CONSISTENCY_CHECK", "ENCRYPTION_TYPE", "SYSTEM_TIME", 
564 			"SYSTEM_VERSIONING", "TEXTIMAGE_ON", "WAIT_AT_LOW_PRIORITY", "STATISTICS_INCREMENTAL", 
565 			"STATISTICS_NORECOMPUTE", "ROUND_ROBIN", "SCHEMA_AND_DATA", "SCHEMA_ONLY", 
566 			"SORT_IN_TEMPDB", "IGNORE_DUP_KEY", "IMPLICIT_TRANSACTIONS", "MAX_DURATION", 
567 			"MEMORY_OPTIMIZED", "MIGRATION_STATE", "PAD_INDEX", "REMOTE_DATA_ARCHIVE", 
568 			"FILESTREAM_ON", "FILETABLE_COLLATE_FILENAME", "FILETABLE_DIRECTORY", 
569 			"FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME", "FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME", 
570 			"FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME", "FILTER_PREDICATE", "HISTORY_RETENTION_PERIOD", 
571 			"HISTORY_TABLE", "LOCK_ESCALATION", "DROP_EXISTING", "ROW_NUMBER", "FETCH", 
572 			"FIRST", "ONLY", "MONEY", "SMALLMONEY", "DATETIMEOFFSET", "DATETIME", 
573 			"DATETIME2", "SMALLDATETIME", "NCHAR", "NVARCHAR", "NTEXT", "VARBINARY", 
574 			"IMAGE", "SQL_VARIANT", "UNIQUEIDENTIFIER", "HIERARCHYID", "GEOMETRY", 
575 			"GEOGRAPHY", "OUTPUT", "INSERTED", "DELETED", "ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS", 
576 			"ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES", "DISABLE_BATCH_MODE_ADAPTIVE_JOINS", 
577 			"DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK", "DISABLE_DEFERRED_COMPILATION_TV", 
578 			"DISABLE_INTERLEAVED_EXECUTION_TVF", "DISABLE_OPTIMIZED_NESTED_LOOP", 
579 			"DISABLE_OPTIMIZER_ROWGOAL", "DISABLE_PARAMETER_SNIFFING", "DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK", 
580 			"DISABLE_TSQL_SCALAR_UDF_INLINING", "DISALLOW_BATCH_MODE", "ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS", 
581 			"ENABLE_QUERY_OPTIMIZER_HOTFIXES", "FORCE_DEFAULT_CARDINALITY_ESTIMATION", 
582 			"FORCE_LEGACY_CARDINALITY_ESTIMATION", "QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n", 
583 			"QUERY_PLAN_PROFILE", "EXTERNALPUSHDOWN", "SCALEOUTEXECUTION", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
584 			"KEEPFIXED", "MAX_GRANT_PERCENT", "MIN_GRANT_PERCENT", "MAXRECURSION", 
585 			"NO_PERFORMANCE_SPOOL", "PARAMETERIZATION", "QUERYTRACEON", "RECOMPILE", 
586 			"ROBUST", "OPTIMIZE_FOR_SEQUENTIAL_KEY", "DATA_DELETION", "FILTER_COLUMN", 
587 			"RETENTION_PERIOD", "CONTAINMENT", "PARTIAL", "FILENAME", "SIZE", "MAXSIZE", 
588 			"FILEGROWTH", "UNLIMITED", "KB", "MB", "GB", "TB", "CONTAINS", "MEMORY_OPTIMIZED_DATA", 
589 			"FILEGROUP", "NON_TRANSACTED_ACCESS", "DB_CHAINING", "TRUSTWORTHY", "FORWARD_ONLY", 
590 			"SCROLL", "STATIC", "KEYSET", "DYNAMIC", "FAST_FORWARD", "SCROLL_LOCKS", 
591 			"OPTIMISTIC", "TYPE_WARNING", "SCHEMABINDING", "CALLER", "INPUT", "CALLED", 
592 			"VARYING", "OUT", "OWNER", "ATOMIC", "LANGUAGE", "LEVEL", "ISOLATION", 
593 			"SNAPSHOT", "REPEATABLE", "READ", "SERIALIZABLE", "NATIVE_COMPILATION", 
594 			"VIEW_METADATA", "AFTER", "INSTEAD", "APPEND", "INCREMENT", "CYCLE", 
595 			"CACHE", "MINVALUE", "MAXVALUE", "RESTART", "LOB_COMPACTION", "COMPRESS_ALL_ROW_GROUPS", 
596 			"REORGANIZE", "RESUME", "PAUSE", "ABORT", "INCLUDE", "DISTRIBUTED", "MARK", 
597 			"WORK", "REMOVE", "AUTOGROW_SINGLE_FILE", "AUTOGROW_ALL_FILES", "READWRITE", 
598 			"READ_WRITE", "MODIFY", "ACCELERATED_DATABASE_RECOVERY", "PERSISTENT_VERSION_STORE_FILEGROUP", 
599 			"IMMEDIATE", "NO_WAIT", "TARGET_RECOVERY_TIME", "SECONDS", "HONOR_BROKER_PRIORITY", 
600 			"ERROR_BROKER_CONVERSATIONS", "NEW_BROKER", "DISABLE_BROKER", "ENABLE_BROKER", 
601 			"MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT", "READ_COMMITTED_SNAPSHOT", "ALLOW_SNAPSHOT_ISOLATION", 
602 			"RECURSIVE_TRIGGERS", "QUOTED_IDENTIFIER", "NUMERIC_ROUNDABORT", "CONCAT_NULL_YIELDS_NULL", 
603 			"COMPATIBILITY_LEVEL", "ARITHABORT", "ANSI_WARNINGS", "ANSI_PADDING", 
604 			"ANSI_NULLS", "ANSI_NULL_DEFAULT", "PAGE_VERIFY", "CHECKSUM", "TORN_PAGE_DETECTION", 
605 			"BULK_LOGGED", "RECOVERY", "TOTAL_EXECUTION_CPU_TIME_MS", "TOTAL_COMPILE_CPU_TIME_MS", 
606 			"STALE_CAPTURE_POLICY_THRESHOLD", "EXECUTION_COUNT", "QUERY_CAPTURE_POLICY", 
607 			"WAIT_STATS_CAPTURE_MODE", "MAX_PLANS_PER_QUERY", "QUERY_CAPTURE_MODE", 
608 			"SIZE_BASED_CLEANUP_MODE", "INTERVAL_LENGTH_MINUTES", "MAX_STORAGE_SIZE_MB", 
609 			"DATA_FLUSH_INTERVAL_SECONDS", "CLEANUP_POLICY", "CUSTOM", "STALE_QUERY_THRESHOLD_DAYS", 
610 			"OPERATION_MODE", "QUERY_STORE", "CURSOR_DEFAULT", "GLOBAL", "CURSOR_CLOSE_ON_COMMIT", 
611 			"HOURS", "CHANGE_RETENTION", "AUTO_CLEANUP", "CHANGE_TRACKING", "AUTOMATIC_TUNING", 
612 			"FORCE_LAST_GOOD_PLAN", "AUTO_UPDATE_STATISTICS_ASYNC", "AUTO_UPDATE_STATISTICS", 
613 			"AUTO_SHRINK", "AUTO_CREATE_STATISTICS", "INCREMENTAL", "AUTO_CLOSE", 
614 			"DATA_RETENTION", "TEMPORAL_HISTORY_RETENTION", "EDITION", "MIXED_PAGE_ALLOCATION", 
615 			"DISABLED", "ALLOWED", "HADR", "MULTI_USER", "RESTRICTED_USER", "SINGLE_USER", 
616 			"OFFLINE", "EMERGENCY", "SUSPEND", "DATE_CORRELATION_OPTIMIZATION", "ELASTIC_POOL", 
617 			"SERVICE_OBJECTIVE", "DATABASE_NAME", "ALLOW_CONNECTIONS", "GEO", "NAMED", 
618 			"DATEFIRST", "BACKUP_STORAGE_REDUNDANCY", "FORCE_FAILOVER_ALLOW_DATA_LOSS", 
619 			"SECONDARY", "FAILOVER", "DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", 
620 			"INLINE", "NESTED_TRIGGERS", "TRANSFORM_NOISE_WORDS", "TWO_DIGIT_YEAR_CUTOFF", 
621 			"PERSISTENT_LOG_BUFFER", "DIRECTORY_NAME", "DATEFORMAT", "DELAYED_DURABILITY", 
622 			"AUTHORIZATION", "TRANSFER", "EXPLAIN", "WITH_RECOMMENDATIONS", "BATCH_SIZE", 
623 			"SETUSER", "NORESET", "DEFAULT_SCHEMA", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", 
624 			"OLD_PASSWORD", "PROVIDER", "SID", "UNCOMMITTED", "COMMITTED", "STOPLIST", 
625 			"SEARCH", "PROPERTY", "LIST", "SEND", "MEMBER", "HASHED", "MUST_CHANGE", 
626 			"DEFAULT_DATABASE", "CHECK_EXPIRATION", "CHECK_POLICY", "WINDOWS", "UNLOCK", 
627 			"REVERT", "COOKIE", "BROWSE", "RAW", "XMLDATA", "XMLSCHEMA", "ELEMENTS", 
628 			"XSINIL", "ABSENT", "EXPLICIT", "PATH", "BASE64", "ROOT", "JSON", "INCLUDE_NULL_VALUES", 
629 			"WITHOUT_ARRAY_WRAPPER", "XMLNAMESPACES", "STATISTICS", "FULLSCAN", "SAMPLE", 
630 			"RESAMPLE", "NORECOMPUTE", "AUTO_DROP", "PERSIST_SAMPLE_PERCENT", "OPENJSON", 
631 			"OPENROWSET", "TRY_CAST", "TRY_CONVERT", "IDENTIFIER_", "DELIMITED_IDENTIFIER_", 
632 			"STRING_", "NUMBER_", "INT_NUM_", "FLOAT_NUM_", "DECIMAL_NUM_", "HEX_DIGIT_", 
633 			"BIT_NUM_", "NCHAR_TEXT", "RESPECT", "IGNORE", "NULLS"
634 		};
635 	}
636 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
637 	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
638 
639 	/**
640 	 * @deprecated Use {@link #VOCABULARY} instead.
641 	 */
642 	@Deprecated
643 	public static final String[] tokenNames;
644 	static {
645 		tokenNames = new String[_SYMBOLIC_NAMES.length];
646 		for (int i = 0; i < tokenNames.length; i++) {
647 			tokenNames[i] = VOCABULARY.getLiteralName(i);
648 			if (tokenNames[i] == null) {
649 				tokenNames[i] = VOCABULARY.getSymbolicName(i);
650 			}
651 
652 			if (tokenNames[i] == null) {
653 				tokenNames[i] = "<INVALID>";
654 			}
655 		}
656 	}
657 
658 	@Override
659 	@Deprecated
660 	public String[] getTokenNames() {
661 		return tokenNames;
662 	}
663 
664 	@Override
665 
666 	public Vocabulary getVocabulary() {
667 		return VOCABULARY;
668 	}
669 
670 	@Override
671 	public String getGrammarFileName() { return "SQLServerStatement.g4"; }
672 
673 	@Override
674 	public String[] getRuleNames() { return ruleNames; }
675 
676 	@Override
677 	public String getSerializedATN() { return _serializedATN; }
678 
679 	@Override
680 	public ATN getATN() { return _ATN; }
681 
682 	public SQLServerStatementParser(TokenStream input) {
683 		super(input);
684 		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
685 	}
686 
687 	public static class ExecuteContext extends ParserRuleContext {
688 		public SelectContext select() {
689 			return getRuleContext(SelectContext.class,0);
690 		}
691 		public InsertContext insert() {
692 			return getRuleContext(InsertContext.class,0);
693 		}
694 		public UpdateContext update() {
695 			return getRuleContext(UpdateContext.class,0);
696 		}
697 		public DeleteContext delete() {
698 			return getRuleContext(DeleteContext.class,0);
699 		}
700 		public CreateIndexContext createIndex() {
701 			return getRuleContext(CreateIndexContext.class,0);
702 		}
703 		public AlterIndexContext alterIndex() {
704 			return getRuleContext(AlterIndexContext.class,0);
705 		}
706 		public DropIndexContext dropIndex() {
707 			return getRuleContext(DropIndexContext.class,0);
708 		}
709 		public CreateTableContext createTable() {
710 			return getRuleContext(CreateTableContext.class,0);
711 		}
712 		public CreateDatabaseContext createDatabase() {
713 			return getRuleContext(CreateDatabaseContext.class,0);
714 		}
715 		public CreateProcedureContext createProcedure() {
716 			return getRuleContext(CreateProcedureContext.class,0);
717 		}
718 		public CreateViewContext createView() {
719 			return getRuleContext(CreateViewContext.class,0);
720 		}
721 		public CreateTriggerContext createTrigger() {
722 			return getRuleContext(CreateTriggerContext.class,0);
723 		}
724 		public CreateSequenceContext createSequence() {
725 			return getRuleContext(CreateSequenceContext.class,0);
726 		}
727 		public CreateServiceContext createService() {
728 			return getRuleContext(CreateServiceContext.class,0);
729 		}
730 		public CreateSchemaContext createSchema() {
731 			return getRuleContext(CreateSchemaContext.class,0);
732 		}
733 		public AlterTableContext alterTable() {
734 			return getRuleContext(AlterTableContext.class,0);
735 		}
736 		public AlterTriggerContext alterTrigger() {
737 			return getRuleContext(AlterTriggerContext.class,0);
738 		}
739 		public AlterSequenceContext alterSequence() {
740 			return getRuleContext(AlterSequenceContext.class,0);
741 		}
742 		public AlterDatabaseContext alterDatabase() {
743 			return getRuleContext(AlterDatabaseContext.class,0);
744 		}
745 		public AlterServiceContext alterService() {
746 			return getRuleContext(AlterServiceContext.class,0);
747 		}
748 		public AlterSchemaContext alterSchema() {
749 			return getRuleContext(AlterSchemaContext.class,0);
750 		}
751 		public AlterViewContext alterView() {
752 			return getRuleContext(AlterViewContext.class,0);
753 		}
754 		public DropTableContext dropTable() {
755 			return getRuleContext(DropTableContext.class,0);
756 		}
757 		public DropDatabaseContext dropDatabase() {
758 			return getRuleContext(DropDatabaseContext.class,0);
759 		}
760 		public DropFunctionContext dropFunction() {
761 			return getRuleContext(DropFunctionContext.class,0);
762 		}
763 		public DropProcedureContext dropProcedure() {
764 			return getRuleContext(DropProcedureContext.class,0);
765 		}
766 		public DropViewContext dropView() {
767 			return getRuleContext(DropViewContext.class,0);
768 		}
769 		public DropTriggerContext dropTrigger() {
770 			return getRuleContext(DropTriggerContext.class,0);
771 		}
772 		public DropSequenceContext dropSequence() {
773 			return getRuleContext(DropSequenceContext.class,0);
774 		}
775 		public DropServiceContext dropService() {
776 			return getRuleContext(DropServiceContext.class,0);
777 		}
778 		public DropSchemaContext dropSchema() {
779 			return getRuleContext(DropSchemaContext.class,0);
780 		}
781 		public TruncateTableContext truncateTable() {
782 			return getRuleContext(TruncateTableContext.class,0);
783 		}
784 		public CreateFunctionContext createFunction() {
785 			return getRuleContext(CreateFunctionContext.class,0);
786 		}
787 		public SetTransactionContext setTransaction() {
788 			return getRuleContext(SetTransactionContext.class,0);
789 		}
790 		public BeginTransactionContext beginTransaction() {
791 			return getRuleContext(BeginTransactionContext.class,0);
792 		}
793 		public BeginDistributedTransactionContext beginDistributedTransaction() {
794 			return getRuleContext(BeginDistributedTransactionContext.class,0);
795 		}
796 		public SetImplicitTransactionsContext setImplicitTransactions() {
797 			return getRuleContext(SetImplicitTransactionsContext.class,0);
798 		}
799 		public CommitContext commit() {
800 			return getRuleContext(CommitContext.class,0);
801 		}
802 		public CommitWorkContext commitWork() {
803 			return getRuleContext(CommitWorkContext.class,0);
804 		}
805 		public RollbackContext rollback() {
806 			return getRuleContext(RollbackContext.class,0);
807 		}
808 		public RollbackWorkContext rollbackWork() {
809 			return getRuleContext(RollbackWorkContext.class,0);
810 		}
811 		public SavepointContext savepoint() {
812 			return getRuleContext(SavepointContext.class,0);
813 		}
814 		public GrantContext grant() {
815 			return getRuleContext(GrantContext.class,0);
816 		}
817 		public RevokeContext revoke() {
818 			return getRuleContext(RevokeContext.class,0);
819 		}
820 		public DenyContext deny() {
821 			return getRuleContext(DenyContext.class,0);
822 		}
823 		public CreateUserContext createUser() {
824 			return getRuleContext(CreateUserContext.class,0);
825 		}
826 		public DropUserContext dropUser() {
827 			return getRuleContext(DropUserContext.class,0);
828 		}
829 		public AlterUserContext alterUser() {
830 			return getRuleContext(AlterUserContext.class,0);
831 		}
832 		public CreateRoleContext createRole() {
833 			return getRuleContext(CreateRoleContext.class,0);
834 		}
835 		public DropRoleContext dropRole() {
836 			return getRuleContext(DropRoleContext.class,0);
837 		}
838 		public AlterRoleContext alterRole() {
839 			return getRuleContext(AlterRoleContext.class,0);
840 		}
841 		public CreateLoginContext createLogin() {
842 			return getRuleContext(CreateLoginContext.class,0);
843 		}
844 		public DropLoginContext dropLogin() {
845 			return getRuleContext(DropLoginContext.class,0);
846 		}
847 		public AlterLoginContext alterLogin() {
848 			return getRuleContext(AlterLoginContext.class,0);
849 		}
850 		public CallContext call() {
851 			return getRuleContext(CallContext.class,0);
852 		}
853 		public ExplainContext explain() {
854 			return getRuleContext(ExplainContext.class,0);
855 		}
856 		public SetUserContext setUser() {
857 			return getRuleContext(SetUserContext.class,0);
858 		}
859 		public RevertContext revert() {
860 			return getRuleContext(RevertContext.class,0);
861 		}
862 		public UpdateStatisticsContext updateStatistics() {
863 			return getRuleContext(UpdateStatisticsContext.class,0);
864 		}
865 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
866 		public ExecuteContext(ParserRuleContext parent, int invokingState) {
867 			super(parent, invokingState);
868 		}
869 		@Override public int getRuleIndex() { return RULE_execute; }
870 		@Override
871 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
872 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecute(this);
873 			else return visitor.visitChildren(this);
874 		}
875 	}
876 
877 	public final ExecuteContext execute() throws RecognitionException {
878 		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
879 		enterRule(_localctx, 0, RULE_execute);
880 		int _la;
881 		try {
882 			enterOuterAlt(_localctx, 1);
883 			{
884 			setState(1063);
885 			_errHandler.sync(this);
886 			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
887 			case 1:
888 				{
889 				setState(1004);
890 				select();
891 				}
892 				break;
893 			case 2:
894 				{
895 				setState(1005);
896 				insert();
897 				}
898 				break;
899 			case 3:
900 				{
901 				setState(1006);
902 				update();
903 				}
904 				break;
905 			case 4:
906 				{
907 				setState(1007);
908 				delete();
909 				}
910 				break;
911 			case 5:
912 				{
913 				setState(1008);
914 				createIndex();
915 				}
916 				break;
917 			case 6:
918 				{
919 				setState(1009);
920 				alterIndex();
921 				}
922 				break;
923 			case 7:
924 				{
925 				setState(1010);
926 				dropIndex();
927 				}
928 				break;
929 			case 8:
930 				{
931 				setState(1011);
932 				createTable();
933 				}
934 				break;
935 			case 9:
936 				{
937 				setState(1012);
938 				createDatabase();
939 				}
940 				break;
941 			case 10:
942 				{
943 				setState(1013);
944 				createProcedure();
945 				}
946 				break;
947 			case 11:
948 				{
949 				setState(1014);
950 				createView();
951 				}
952 				break;
953 			case 12:
954 				{
955 				setState(1015);
956 				createTrigger();
957 				}
958 				break;
959 			case 13:
960 				{
961 				setState(1016);
962 				createSequence();
963 				}
964 				break;
965 			case 14:
966 				{
967 				setState(1017);
968 				createService();
969 				}
970 				break;
971 			case 15:
972 				{
973 				setState(1018);
974 				createSchema();
975 				}
976 				break;
977 			case 16:
978 				{
979 				setState(1019);
980 				alterTable();
981 				}
982 				break;
983 			case 17:
984 				{
985 				setState(1020);
986 				alterTrigger();
987 				}
988 				break;
989 			case 18:
990 				{
991 				setState(1021);
992 				alterSequence();
993 				}
994 				break;
995 			case 19:
996 				{
997 				setState(1022);
998 				alterDatabase();
999 				}
1000 				break;
1001 			case 20:
1002 				{
1003 				setState(1023);
1004 				alterService();
1005 				}
1006 				break;
1007 			case 21:
1008 				{
1009 				setState(1024);
1010 				alterSchema();
1011 				}
1012 				break;
1013 			case 22:
1014 				{
1015 				setState(1025);
1016 				alterView();
1017 				}
1018 				break;
1019 			case 23:
1020 				{
1021 				setState(1026);
1022 				dropTable();
1023 				}
1024 				break;
1025 			case 24:
1026 				{
1027 				setState(1027);
1028 				dropDatabase();
1029 				}
1030 				break;
1031 			case 25:
1032 				{
1033 				setState(1028);
1034 				dropFunction();
1035 				}
1036 				break;
1037 			case 26:
1038 				{
1039 				setState(1029);
1040 				dropProcedure();
1041 				}
1042 				break;
1043 			case 27:
1044 				{
1045 				setState(1030);
1046 				dropView();
1047 				}
1048 				break;
1049 			case 28:
1050 				{
1051 				setState(1031);
1052 				dropTrigger();
1053 				}
1054 				break;
1055 			case 29:
1056 				{
1057 				setState(1032);
1058 				dropSequence();
1059 				}
1060 				break;
1061 			case 30:
1062 				{
1063 				setState(1033);
1064 				dropService();
1065 				}
1066 				break;
1067 			case 31:
1068 				{
1069 				setState(1034);
1070 				dropSchema();
1071 				}
1072 				break;
1073 			case 32:
1074 				{
1075 				setState(1035);
1076 				truncateTable();
1077 				}
1078 				break;
1079 			case 33:
1080 				{
1081 				setState(1036);
1082 				createFunction();
1083 				}
1084 				break;
1085 			case 34:
1086 				{
1087 				setState(1037);
1088 				setTransaction();
1089 				}
1090 				break;
1091 			case 35:
1092 				{
1093 				setState(1038);
1094 				beginTransaction();
1095 				}
1096 				break;
1097 			case 36:
1098 				{
1099 				setState(1039);
1100 				beginDistributedTransaction();
1101 				}
1102 				break;
1103 			case 37:
1104 				{
1105 				setState(1040);
1106 				setImplicitTransactions();
1107 				}
1108 				break;
1109 			case 38:
1110 				{
1111 				setState(1041);
1112 				commit();
1113 				}
1114 				break;
1115 			case 39:
1116 				{
1117 				setState(1042);
1118 				commitWork();
1119 				}
1120 				break;
1121 			case 40:
1122 				{
1123 				setState(1043);
1124 				rollback();
1125 				}
1126 				break;
1127 			case 41:
1128 				{
1129 				setState(1044);
1130 				rollbackWork();
1131 				}
1132 				break;
1133 			case 42:
1134 				{
1135 				setState(1045);
1136 				savepoint();
1137 				}
1138 				break;
1139 			case 43:
1140 				{
1141 				setState(1046);
1142 				grant();
1143 				}
1144 				break;
1145 			case 44:
1146 				{
1147 				setState(1047);
1148 				revoke();
1149 				}
1150 				break;
1151 			case 45:
1152 				{
1153 				setState(1048);
1154 				deny();
1155 				}
1156 				break;
1157 			case 46:
1158 				{
1159 				setState(1049);
1160 				createUser();
1161 				}
1162 				break;
1163 			case 47:
1164 				{
1165 				setState(1050);
1166 				dropUser();
1167 				}
1168 				break;
1169 			case 48:
1170 				{
1171 				setState(1051);
1172 				alterUser();
1173 				}
1174 				break;
1175 			case 49:
1176 				{
1177 				setState(1052);
1178 				createRole();
1179 				}
1180 				break;
1181 			case 50:
1182 				{
1183 				setState(1053);
1184 				dropRole();
1185 				}
1186 				break;
1187 			case 51:
1188 				{
1189 				setState(1054);
1190 				alterRole();
1191 				}
1192 				break;
1193 			case 52:
1194 				{
1195 				setState(1055);
1196 				createLogin();
1197 				}
1198 				break;
1199 			case 53:
1200 				{
1201 				setState(1056);
1202 				dropLogin();
1203 				}
1204 				break;
1205 			case 54:
1206 				{
1207 				setState(1057);
1208 				alterLogin();
1209 				}
1210 				break;
1211 			case 55:
1212 				{
1213 				setState(1058);
1214 				call();
1215 				}
1216 				break;
1217 			case 56:
1218 				{
1219 				setState(1059);
1220 				explain();
1221 				}
1222 				break;
1223 			case 57:
1224 				{
1225 				setState(1060);
1226 				setUser();
1227 				}
1228 				break;
1229 			case 58:
1230 				{
1231 				setState(1061);
1232 				revert();
1233 				}
1234 				break;
1235 			case 59:
1236 				{
1237 				setState(1062);
1238 				updateStatistics();
1239 				}
1240 				break;
1241 			}
1242 			setState(1066);
1243 			_errHandler.sync(this);
1244 			_la = _input.LA(1);
1245 			if (_la==SEMI_) {
1246 				{
1247 				setState(1065);
1248 				match(SEMI_);
1249 				}
1250 			}
1251 
1252 			}
1253 		}
1254 		catch (RecognitionException re) {
1255 			_localctx.exception = re;
1256 			_errHandler.reportError(this, re);
1257 			_errHandler.recover(this, re);
1258 		}
1259 		finally {
1260 			exitRule();
1261 		}
1262 		return _localctx;
1263 	}
1264 
1265 	public static class SetTransactionContext extends ParserRuleContext {
1266 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1267 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1268 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
1269 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
1270 		public IsolationLevelContext isolationLevel() {
1271 			return getRuleContext(IsolationLevelContext.class,0);
1272 		}
1273 		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
1274 			super(parent, invokingState);
1275 		}
1276 		@Override public int getRuleIndex() { return RULE_setTransaction; }
1277 		@Override
1278 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1279 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetTransaction(this);
1280 			else return visitor.visitChildren(this);
1281 		}
1282 	}
1283 
1284 	public final SetTransactionContext setTransaction() throws RecognitionException {
1285 		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
1286 		enterRule(_localctx, 2, RULE_setTransaction);
1287 		try {
1288 			enterOuterAlt(_localctx, 1);
1289 			{
1290 			setState(1068);
1291 			match(SET);
1292 			setState(1069);
1293 			match(TRANSACTION);
1294 			setState(1070);
1295 			match(ISOLATION);
1296 			setState(1071);
1297 			match(LEVEL);
1298 			setState(1072);
1299 			isolationLevel();
1300 			}
1301 		}
1302 		catch (RecognitionException re) {
1303 			_localctx.exception = re;
1304 			_errHandler.reportError(this, re);
1305 			_errHandler.recover(this, re);
1306 		}
1307 		finally {
1308 			exitRule();
1309 		}
1310 		return _localctx;
1311 	}
1312 
1313 	public static class IsolationLevelContext extends ParserRuleContext {
1314 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
1315 		public TerminalNode UNCOMMITTED() { return getToken(SQLServerStatementParser.UNCOMMITTED, 0); }
1316 		public TerminalNode COMMITTED() { return getToken(SQLServerStatementParser.COMMITTED, 0); }
1317 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
1318 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
1319 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
1320 		public IsolationLevelContext(ParserRuleContext parent, int invokingState) {
1321 			super(parent, invokingState);
1322 		}
1323 		@Override public int getRuleIndex() { return RULE_isolationLevel; }
1324 		@Override
1325 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1326 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIsolationLevel(this);
1327 			else return visitor.visitChildren(this);
1328 		}
1329 	}
1330 
1331 	public final IsolationLevelContext isolationLevel() throws RecognitionException {
1332 		IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState());
1333 		enterRule(_localctx, 4, RULE_isolationLevel);
1334 		try {
1335 			setState(1082);
1336 			_errHandler.sync(this);
1337 			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
1338 			case 1:
1339 				enterOuterAlt(_localctx, 1);
1340 				{
1341 				setState(1074);
1342 				match(READ);
1343 				setState(1075);
1344 				match(UNCOMMITTED);
1345 				}
1346 				break;
1347 			case 2:
1348 				enterOuterAlt(_localctx, 2);
1349 				{
1350 				setState(1076);
1351 				match(READ);
1352 				setState(1077);
1353 				match(COMMITTED);
1354 				}
1355 				break;
1356 			case 3:
1357 				enterOuterAlt(_localctx, 3);
1358 				{
1359 				setState(1078);
1360 				match(REPEATABLE);
1361 				setState(1079);
1362 				match(READ);
1363 				}
1364 				break;
1365 			case 4:
1366 				enterOuterAlt(_localctx, 4);
1367 				{
1368 				setState(1080);
1369 				match(SNAPSHOT);
1370 				}
1371 				break;
1372 			case 5:
1373 				enterOuterAlt(_localctx, 5);
1374 				{
1375 				setState(1081);
1376 				match(SERIALIZABLE);
1377 				}
1378 				break;
1379 			}
1380 		}
1381 		catch (RecognitionException re) {
1382 			_localctx.exception = re;
1383 			_errHandler.reportError(this, re);
1384 			_errHandler.recover(this, re);
1385 		}
1386 		finally {
1387 			exitRule();
1388 		}
1389 		return _localctx;
1390 	}
1391 
1392 	public static class SetImplicitTransactionsContext extends ParserRuleContext {
1393 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1394 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
1395 		public ImplicitTransactionsValueContext implicitTransactionsValue() {
1396 			return getRuleContext(ImplicitTransactionsValueContext.class,0);
1397 		}
1398 		public SetImplicitTransactionsContext(ParserRuleContext parent, int invokingState) {
1399 			super(parent, invokingState);
1400 		}
1401 		@Override public int getRuleIndex() { return RULE_setImplicitTransactions; }
1402 		@Override
1403 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1404 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetImplicitTransactions(this);
1405 			else return visitor.visitChildren(this);
1406 		}
1407 	}
1408 
1409 	public final SetImplicitTransactionsContext setImplicitTransactions() throws RecognitionException {
1410 		SetImplicitTransactionsContext _localctx = new SetImplicitTransactionsContext(_ctx, getState());
1411 		enterRule(_localctx, 6, RULE_setImplicitTransactions);
1412 		try {
1413 			enterOuterAlt(_localctx, 1);
1414 			{
1415 			setState(1084);
1416 			match(SET);
1417 			setState(1085);
1418 			match(IMPLICIT_TRANSACTIONS);
1419 			setState(1086);
1420 			implicitTransactionsValue();
1421 			}
1422 		}
1423 		catch (RecognitionException re) {
1424 			_localctx.exception = re;
1425 			_errHandler.reportError(this, re);
1426 			_errHandler.recover(this, re);
1427 		}
1428 		finally {
1429 			exitRule();
1430 		}
1431 		return _localctx;
1432 	}
1433 
1434 	public static class ImplicitTransactionsValueContext extends ParserRuleContext {
1435 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1436 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1437 		public ImplicitTransactionsValueContext(ParserRuleContext parent, int invokingState) {
1438 			super(parent, invokingState);
1439 		}
1440 		@Override public int getRuleIndex() { return RULE_implicitTransactionsValue; }
1441 		@Override
1442 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1443 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitImplicitTransactionsValue(this);
1444 			else return visitor.visitChildren(this);
1445 		}
1446 	}
1447 
1448 	public final ImplicitTransactionsValueContext implicitTransactionsValue() throws RecognitionException {
1449 		ImplicitTransactionsValueContext _localctx = new ImplicitTransactionsValueContext(_ctx, getState());
1450 		enterRule(_localctx, 8, RULE_implicitTransactionsValue);
1451 		int _la;
1452 		try {
1453 			enterOuterAlt(_localctx, 1);
1454 			{
1455 			setState(1088);
1456 			_la = _input.LA(1);
1457 			if ( !(_la==ON || _la==OFF) ) {
1458 			_errHandler.recoverInline(this);
1459 			}
1460 			else {
1461 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1462 				_errHandler.reportMatch(this);
1463 				consume();
1464 			}
1465 			}
1466 		}
1467 		catch (RecognitionException re) {
1468 			_localctx.exception = re;
1469 			_errHandler.reportError(this, re);
1470 			_errHandler.recover(this, re);
1471 		}
1472 		finally {
1473 			exitRule();
1474 		}
1475 		return _localctx;
1476 	}
1477 
1478 	public static class BeginTransactionContext extends ParserRuleContext {
1479 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1480 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1481 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1482 		public TransactionNameContext transactionName() {
1483 			return getRuleContext(TransactionNameContext.class,0);
1484 		}
1485 		public TransactionVariableNameContext transactionVariableName() {
1486 			return getRuleContext(TransactionVariableNameContext.class,0);
1487 		}
1488 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1489 		public TerminalNode MARK() { return getToken(SQLServerStatementParser.MARK, 0); }
1490 		public StringLiteralsContext stringLiterals() {
1491 			return getRuleContext(StringLiteralsContext.class,0);
1492 		}
1493 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
1494 		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
1495 			super(parent, invokingState);
1496 		}
1497 		@Override public int getRuleIndex() { return RULE_beginTransaction; }
1498 		@Override
1499 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1500 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginTransaction(this);
1501 			else return visitor.visitChildren(this);
1502 		}
1503 	}
1504 
1505 	public final BeginTransactionContext beginTransaction() throws RecognitionException {
1506 		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
1507 		enterRule(_localctx, 10, RULE_beginTransaction);
1508 		int _la;
1509 		try {
1510 			enterOuterAlt(_localctx, 1);
1511 			{
1512 			setState(1090);
1513 			match(BEGIN);
1514 			setState(1091);
1515 			_la = _input.LA(1);
1516 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1517 			_errHandler.recoverInline(this);
1518 			}
1519 			else {
1520 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1521 				_errHandler.reportMatch(this);
1522 				consume();
1523 			}
1524 			setState(1104);
1525 			_errHandler.sync(this);
1526 			_la = _input.LA(1);
1527 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
1528 				{
1529 				setState(1094);
1530 				_errHandler.sync(this);
1531 				switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
1532 				case 1:
1533 					{
1534 					setState(1092);
1535 					transactionName();
1536 					}
1537 					break;
1538 				case 2:
1539 					{
1540 					setState(1093);
1541 					transactionVariableName();
1542 					}
1543 					break;
1544 				}
1545 				setState(1102);
1546 				_errHandler.sync(this);
1547 				_la = _input.LA(1);
1548 				if (_la==WITH) {
1549 					{
1550 					setState(1096);
1551 					match(WITH);
1552 					setState(1097);
1553 					match(MARK);
1554 					setState(1100);
1555 					_errHandler.sync(this);
1556 					switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
1557 					case 1:
1558 						{
1559 						setState(1098);
1560 						stringLiterals();
1561 						}
1562 						break;
1563 					case 2:
1564 						{
1565 						setState(1099);
1566 						match(NCHAR_TEXT);
1567 						}
1568 						break;
1569 					}
1570 					}
1571 				}
1572 
1573 				}
1574 			}
1575 
1576 			}
1577 		}
1578 		catch (RecognitionException re) {
1579 			_localctx.exception = re;
1580 			_errHandler.reportError(this, re);
1581 			_errHandler.recover(this, re);
1582 		}
1583 		finally {
1584 			exitRule();
1585 		}
1586 		return _localctx;
1587 	}
1588 
1589 	public static class BeginDistributedTransactionContext extends ParserRuleContext {
1590 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1591 		public TerminalNode DISTRIBUTED() { return getToken(SQLServerStatementParser.DISTRIBUTED, 0); }
1592 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1593 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1594 		public TransactionNameContext transactionName() {
1595 			return getRuleContext(TransactionNameContext.class,0);
1596 		}
1597 		public TransactionVariableNameContext transactionVariableName() {
1598 			return getRuleContext(TransactionVariableNameContext.class,0);
1599 		}
1600 		public BeginDistributedTransactionContext(ParserRuleContext parent, int invokingState) {
1601 			super(parent, invokingState);
1602 		}
1603 		@Override public int getRuleIndex() { return RULE_beginDistributedTransaction; }
1604 		@Override
1605 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1606 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginDistributedTransaction(this);
1607 			else return visitor.visitChildren(this);
1608 		}
1609 	}
1610 
1611 	public final BeginDistributedTransactionContext beginDistributedTransaction() throws RecognitionException {
1612 		BeginDistributedTransactionContext _localctx = new BeginDistributedTransactionContext(_ctx, getState());
1613 		enterRule(_localctx, 12, RULE_beginDistributedTransaction);
1614 		int _la;
1615 		try {
1616 			enterOuterAlt(_localctx, 1);
1617 			{
1618 			setState(1106);
1619 			match(BEGIN);
1620 			setState(1107);
1621 			match(DISTRIBUTED);
1622 			setState(1108);
1623 			_la = _input.LA(1);
1624 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1625 			_errHandler.recoverInline(this);
1626 			}
1627 			else {
1628 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1629 				_errHandler.reportMatch(this);
1630 				consume();
1631 			}
1632 			setState(1111);
1633 			_errHandler.sync(this);
1634 			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
1635 			case 1:
1636 				{
1637 				setState(1109);
1638 				transactionName();
1639 				}
1640 				break;
1641 			case 2:
1642 				{
1643 				setState(1110);
1644 				transactionVariableName();
1645 				}
1646 				break;
1647 			}
1648 			}
1649 		}
1650 		catch (RecognitionException re) {
1651 			_localctx.exception = re;
1652 			_errHandler.reportError(this, re);
1653 			_errHandler.recover(this, re);
1654 		}
1655 		finally {
1656 			exitRule();
1657 		}
1658 		return _localctx;
1659 	}
1660 
1661 	public static class CommitContext extends ParserRuleContext {
1662 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1663 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1664 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
1665 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
1666 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
1667 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
1668 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1669 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1670 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1671 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1672 		public TransactionNameContext transactionName() {
1673 			return getRuleContext(TransactionNameContext.class,0);
1674 		}
1675 		public TransactionVariableNameContext transactionVariableName() {
1676 			return getRuleContext(TransactionVariableNameContext.class,0);
1677 		}
1678 		public CommitContext(ParserRuleContext parent, int invokingState) {
1679 			super(parent, invokingState);
1680 		}
1681 		@Override public int getRuleIndex() { return RULE_commit; }
1682 		@Override
1683 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1684 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommit(this);
1685 			else return visitor.visitChildren(this);
1686 		}
1687 	}
1688 
1689 	public final CommitContext commit() throws RecognitionException {
1690 		CommitContext _localctx = new CommitContext(_ctx, getState());
1691 		enterRule(_localctx, 14, RULE_commit);
1692 		int _la;
1693 		try {
1694 			enterOuterAlt(_localctx, 1);
1695 			{
1696 			setState(1113);
1697 			match(COMMIT);
1698 			setState(1119);
1699 			_errHandler.sync(this);
1700 			_la = _input.LA(1);
1701 			if (_la==TRANSACTION || _la==TRAN) {
1702 				{
1703 				setState(1114);
1704 				_la = _input.LA(1);
1705 				if ( !(_la==TRANSACTION || _la==TRAN) ) {
1706 				_errHandler.recoverInline(this);
1707 				}
1708 				else {
1709 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1710 					_errHandler.reportMatch(this);
1711 					consume();
1712 				}
1713 				setState(1117);
1714 				_errHandler.sync(this);
1715 				switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
1716 				case 1:
1717 					{
1718 					setState(1115);
1719 					transactionName();
1720 					}
1721 					break;
1722 				case 2:
1723 					{
1724 					setState(1116);
1725 					transactionVariableName();
1726 					}
1727 					break;
1728 				}
1729 				}
1730 			}
1731 
1732 			setState(1127);
1733 			_errHandler.sync(this);
1734 			_la = _input.LA(1);
1735 			if (_la==WITH) {
1736 				{
1737 				setState(1121);
1738 				match(WITH);
1739 				setState(1122);
1740 				match(LP_);
1741 				setState(1123);
1742 				match(DELAYED_DURABILITY);
1743 				setState(1124);
1744 				match(EQ_);
1745 				setState(1125);
1746 				_la = _input.LA(1);
1747 				if ( !(_la==ON || _la==OFF) ) {
1748 				_errHandler.recoverInline(this);
1749 				}
1750 				else {
1751 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1752 					_errHandler.reportMatch(this);
1753 					consume();
1754 				}
1755 				setState(1126);
1756 				match(RP_);
1757 				}
1758 			}
1759 
1760 			}
1761 		}
1762 		catch (RecognitionException re) {
1763 			_localctx.exception = re;
1764 			_errHandler.reportError(this, re);
1765 			_errHandler.recover(this, re);
1766 		}
1767 		finally {
1768 			exitRule();
1769 		}
1770 		return _localctx;
1771 	}
1772 
1773 	public static class CommitWorkContext extends ParserRuleContext {
1774 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1775 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1776 		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
1777 			super(parent, invokingState);
1778 		}
1779 		@Override public int getRuleIndex() { return RULE_commitWork; }
1780 		@Override
1781 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1782 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommitWork(this);
1783 			else return visitor.visitChildren(this);
1784 		}
1785 	}
1786 
1787 	public final CommitWorkContext commitWork() throws RecognitionException {
1788 		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
1789 		enterRule(_localctx, 16, RULE_commitWork);
1790 		int _la;
1791 		try {
1792 			enterOuterAlt(_localctx, 1);
1793 			{
1794 			setState(1129);
1795 			match(COMMIT);
1796 			setState(1131);
1797 			_errHandler.sync(this);
1798 			_la = _input.LA(1);
1799 			if (_la==WORK) {
1800 				{
1801 				setState(1130);
1802 				match(WORK);
1803 				}
1804 			}
1805 
1806 			}
1807 		}
1808 		catch (RecognitionException re) {
1809 			_localctx.exception = re;
1810 			_errHandler.reportError(this, re);
1811 			_errHandler.recover(this, re);
1812 		}
1813 		finally {
1814 			exitRule();
1815 		}
1816 		return _localctx;
1817 	}
1818 
1819 	public static class RollbackContext extends ParserRuleContext {
1820 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1821 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1822 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1823 		public TransactionNameContext transactionName() {
1824 			return getRuleContext(TransactionNameContext.class,0);
1825 		}
1826 		public TransactionVariableNameContext transactionVariableName() {
1827 			return getRuleContext(TransactionVariableNameContext.class,0);
1828 		}
1829 		public SavepointNameContext savepointName() {
1830 			return getRuleContext(SavepointNameContext.class,0);
1831 		}
1832 		public SavepointVariableNameContext savepointVariableName() {
1833 			return getRuleContext(SavepointVariableNameContext.class,0);
1834 		}
1835 		public RollbackContext(ParserRuleContext parent, int invokingState) {
1836 			super(parent, invokingState);
1837 		}
1838 		@Override public int getRuleIndex() { return RULE_rollback; }
1839 		@Override
1840 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1841 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollback(this);
1842 			else return visitor.visitChildren(this);
1843 		}
1844 	}
1845 
1846 	public final RollbackContext rollback() throws RecognitionException {
1847 		RollbackContext _localctx = new RollbackContext(_ctx, getState());
1848 		enterRule(_localctx, 18, RULE_rollback);
1849 		int _la;
1850 		try {
1851 			enterOuterAlt(_localctx, 1);
1852 			{
1853 			setState(1133);
1854 			match(ROLLBACK);
1855 			setState(1134);
1856 			_la = _input.LA(1);
1857 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1858 			_errHandler.recoverInline(this);
1859 			}
1860 			else {
1861 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1862 				_errHandler.reportMatch(this);
1863 				consume();
1864 			}
1865 			setState(1139);
1866 			_errHandler.sync(this);
1867 			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
1868 			case 1:
1869 				{
1870 				setState(1135);
1871 				transactionName();
1872 				}
1873 				break;
1874 			case 2:
1875 				{
1876 				setState(1136);
1877 				transactionVariableName();
1878 				}
1879 				break;
1880 			case 3:
1881 				{
1882 				setState(1137);
1883 				savepointName();
1884 				}
1885 				break;
1886 			case 4:
1887 				{
1888 				setState(1138);
1889 				savepointVariableName();
1890 				}
1891 				break;
1892 			}
1893 			}
1894 		}
1895 		catch (RecognitionException re) {
1896 			_localctx.exception = re;
1897 			_errHandler.reportError(this, re);
1898 			_errHandler.recover(this, re);
1899 		}
1900 		finally {
1901 			exitRule();
1902 		}
1903 		return _localctx;
1904 	}
1905 
1906 	public static class RollbackWorkContext extends ParserRuleContext {
1907 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1908 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1909 		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
1910 			super(parent, invokingState);
1911 		}
1912 		@Override public int getRuleIndex() { return RULE_rollbackWork; }
1913 		@Override
1914 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1915 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollbackWork(this);
1916 			else return visitor.visitChildren(this);
1917 		}
1918 	}
1919 
1920 	public final RollbackWorkContext rollbackWork() throws RecognitionException {
1921 		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
1922 		enterRule(_localctx, 20, RULE_rollbackWork);
1923 		int _la;
1924 		try {
1925 			enterOuterAlt(_localctx, 1);
1926 			{
1927 			setState(1141);
1928 			match(ROLLBACK);
1929 			setState(1143);
1930 			_errHandler.sync(this);
1931 			_la = _input.LA(1);
1932 			if (_la==WORK) {
1933 				{
1934 				setState(1142);
1935 				match(WORK);
1936 				}
1937 			}
1938 
1939 			}
1940 		}
1941 		catch (RecognitionException re) {
1942 			_localctx.exception = re;
1943 			_errHandler.reportError(this, re);
1944 			_errHandler.recover(this, re);
1945 		}
1946 		finally {
1947 			exitRule();
1948 		}
1949 		return _localctx;
1950 	}
1951 
1952 	public static class SavepointContext extends ParserRuleContext {
1953 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
1954 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1955 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1956 		public SavepointNameContext savepointName() {
1957 			return getRuleContext(SavepointNameContext.class,0);
1958 		}
1959 		public SavepointVariableNameContext savepointVariableName() {
1960 			return getRuleContext(SavepointVariableNameContext.class,0);
1961 		}
1962 		public SavepointContext(ParserRuleContext parent, int invokingState) {
1963 			super(parent, invokingState);
1964 		}
1965 		@Override public int getRuleIndex() { return RULE_savepoint; }
1966 		@Override
1967 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1968 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepoint(this);
1969 			else return visitor.visitChildren(this);
1970 		}
1971 	}
1972 
1973 	public final SavepointContext savepoint() throws RecognitionException {
1974 		SavepointContext _localctx = new SavepointContext(_ctx, getState());
1975 		enterRule(_localctx, 22, RULE_savepoint);
1976 		int _la;
1977 		try {
1978 			enterOuterAlt(_localctx, 1);
1979 			{
1980 			setState(1145);
1981 			match(SAVE);
1982 			setState(1146);
1983 			_la = _input.LA(1);
1984 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1985 			_errHandler.recoverInline(this);
1986 			}
1987 			else {
1988 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1989 				_errHandler.reportMatch(this);
1990 				consume();
1991 			}
1992 			setState(1149);
1993 			_errHandler.sync(this);
1994 			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
1995 			case 1:
1996 				{
1997 				setState(1147);
1998 				savepointName();
1999 				}
2000 				break;
2001 			case 2:
2002 				{
2003 				setState(1148);
2004 				savepointVariableName();
2005 				}
2006 				break;
2007 			}
2008 			}
2009 		}
2010 		catch (RecognitionException re) {
2011 			_localctx.exception = re;
2012 			_errHandler.reportError(this, re);
2013 			_errHandler.recover(this, re);
2014 		}
2015 		finally {
2016 			exitRule();
2017 		}
2018 		return _localctx;
2019 	}
2020 
2021 	public static class ParameterMarkerContext extends ParserRuleContext {
2022 		public TerminalNode QUESTION_() { return getToken(SQLServerStatementParser.QUESTION_, 0); }
2023 		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
2024 			super(parent, invokingState);
2025 		}
2026 		@Override public int getRuleIndex() { return RULE_parameterMarker; }
2027 		@Override
2028 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2029 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitParameterMarker(this);
2030 			else return visitor.visitChildren(this);
2031 		}
2032 	}
2033 
2034 	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
2035 		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
2036 		enterRule(_localctx, 24, RULE_parameterMarker);
2037 		try {
2038 			enterOuterAlt(_localctx, 1);
2039 			{
2040 			setState(1151);
2041 			match(QUESTION_);
2042 			}
2043 		}
2044 		catch (RecognitionException re) {
2045 			_localctx.exception = re;
2046 			_errHandler.reportError(this, re);
2047 			_errHandler.recover(this, re);
2048 		}
2049 		finally {
2050 			exitRule();
2051 		}
2052 		return _localctx;
2053 	}
2054 
2055 	public static class LiteralsContext extends ParserRuleContext {
2056 		public StringLiteralsContext stringLiterals() {
2057 			return getRuleContext(StringLiteralsContext.class,0);
2058 		}
2059 		public NumberLiteralsContext numberLiterals() {
2060 			return getRuleContext(NumberLiteralsContext.class,0);
2061 		}
2062 		public DateTimeLiteralsContext dateTimeLiterals() {
2063 			return getRuleContext(DateTimeLiteralsContext.class,0);
2064 		}
2065 		public HexadecimalLiteralsContext hexadecimalLiterals() {
2066 			return getRuleContext(HexadecimalLiteralsContext.class,0);
2067 		}
2068 		public BitValueLiteralsContext bitValueLiterals() {
2069 			return getRuleContext(BitValueLiteralsContext.class,0);
2070 		}
2071 		public BooleanLiteralsContext booleanLiterals() {
2072 			return getRuleContext(BooleanLiteralsContext.class,0);
2073 		}
2074 		public NullValueLiteralsContext nullValueLiterals() {
2075 			return getRuleContext(NullValueLiteralsContext.class,0);
2076 		}
2077 		public LiteralsContext(ParserRuleContext parent, int invokingState) {
2078 			super(parent, invokingState);
2079 		}
2080 		@Override public int getRuleIndex() { return RULE_literals; }
2081 		@Override
2082 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2083 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLiterals(this);
2084 			else return visitor.visitChildren(this);
2085 		}
2086 	}
2087 
2088 	public final LiteralsContext literals() throws RecognitionException {
2089 		LiteralsContext _localctx = new LiteralsContext(_ctx, getState());
2090 		enterRule(_localctx, 26, RULE_literals);
2091 		try {
2092 			setState(1160);
2093 			_errHandler.sync(this);
2094 			switch (_input.LA(1)) {
2095 			case STRING_:
2096 			case NCHAR_TEXT:
2097 				enterOuterAlt(_localctx, 1);
2098 				{
2099 				setState(1153);
2100 				stringLiterals();
2101 				}
2102 				break;
2103 			case PLUS_:
2104 			case MINUS_:
2105 			case NUMBER_:
2106 				enterOuterAlt(_localctx, 2);
2107 				{
2108 				setState(1154);
2109 				numberLiterals();
2110 				}
2111 				break;
2112 			case LBE_:
2113 			case DATE:
2114 			case TIME:
2115 			case TIMESTAMP:
2116 				enterOuterAlt(_localctx, 3);
2117 				{
2118 				setState(1155);
2119 				dateTimeLiterals();
2120 				}
2121 				break;
2122 			case HEX_DIGIT_:
2123 				enterOuterAlt(_localctx, 4);
2124 				{
2125 				setState(1156);
2126 				hexadecimalLiterals();
2127 				}
2128 				break;
2129 			case BIT_NUM_:
2130 				enterOuterAlt(_localctx, 5);
2131 				{
2132 				setState(1157);
2133 				bitValueLiterals();
2134 				}
2135 				break;
2136 			case TRUE:
2137 			case FALSE:
2138 				enterOuterAlt(_localctx, 6);
2139 				{
2140 				setState(1158);
2141 				booleanLiterals();
2142 				}
2143 				break;
2144 			case NULL:
2145 				enterOuterAlt(_localctx, 7);
2146 				{
2147 				setState(1159);
2148 				nullValueLiterals();
2149 				}
2150 				break;
2151 			default:
2152 				throw new NoViableAltException(this);
2153 			}
2154 		}
2155 		catch (RecognitionException re) {
2156 			_localctx.exception = re;
2157 			_errHandler.reportError(this, re);
2158 			_errHandler.recover(this, re);
2159 		}
2160 		finally {
2161 			exitRule();
2162 		}
2163 		return _localctx;
2164 	}
2165 
2166 	public static class StringLiteralsContext extends ParserRuleContext {
2167 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2168 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
2169 		public StringLiteralsContext(ParserRuleContext parent, int invokingState) {
2170 			super(parent, invokingState);
2171 		}
2172 		@Override public int getRuleIndex() { return RULE_stringLiterals; }
2173 		@Override
2174 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2175 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStringLiterals(this);
2176 			else return visitor.visitChildren(this);
2177 		}
2178 	}
2179 
2180 	public final StringLiteralsContext stringLiterals() throws RecognitionException {
2181 		StringLiteralsContext _localctx = new StringLiteralsContext(_ctx, getState());
2182 		enterRule(_localctx, 28, RULE_stringLiterals);
2183 		int _la;
2184 		try {
2185 			enterOuterAlt(_localctx, 1);
2186 			{
2187 			setState(1162);
2188 			_la = _input.LA(1);
2189 			if ( !(_la==STRING_ || _la==NCHAR_TEXT) ) {
2190 			_errHandler.recoverInline(this);
2191 			}
2192 			else {
2193 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2194 				_errHandler.reportMatch(this);
2195 				consume();
2196 			}
2197 			}
2198 		}
2199 		catch (RecognitionException re) {
2200 			_localctx.exception = re;
2201 			_errHandler.reportError(this, re);
2202 			_errHandler.recover(this, re);
2203 		}
2204 		finally {
2205 			exitRule();
2206 		}
2207 		return _localctx;
2208 	}
2209 
2210 	public static class NumberLiteralsContext extends ParserRuleContext {
2211 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
2212 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
2213 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
2214 		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
2215 			super(parent, invokingState);
2216 		}
2217 		@Override public int getRuleIndex() { return RULE_numberLiterals; }
2218 		@Override
2219 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2220 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberLiterals(this);
2221 			else return visitor.visitChildren(this);
2222 		}
2223 	}
2224 
2225 	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
2226 		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
2227 		enterRule(_localctx, 30, RULE_numberLiterals);
2228 		int _la;
2229 		try {
2230 			enterOuterAlt(_localctx, 1);
2231 			{
2232 			setState(1165);
2233 			_errHandler.sync(this);
2234 			_la = _input.LA(1);
2235 			if (_la==PLUS_ || _la==MINUS_) {
2236 				{
2237 				setState(1164);
2238 				_la = _input.LA(1);
2239 				if ( !(_la==PLUS_ || _la==MINUS_) ) {
2240 				_errHandler.recoverInline(this);
2241 				}
2242 				else {
2243 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2244 					_errHandler.reportMatch(this);
2245 					consume();
2246 				}
2247 				}
2248 			}
2249 
2250 			setState(1167);
2251 			match(NUMBER_);
2252 			}
2253 		}
2254 		catch (RecognitionException re) {
2255 			_localctx.exception = re;
2256 			_errHandler.reportError(this, re);
2257 			_errHandler.recover(this, re);
2258 		}
2259 		finally {
2260 			exitRule();
2261 		}
2262 		return _localctx;
2263 	}
2264 
2265 	public static class DateTimeLiteralsContext extends ParserRuleContext {
2266 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2267 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
2268 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
2269 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
2270 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
2271 		public IdentifierContext identifier() {
2272 			return getRuleContext(IdentifierContext.class,0);
2273 		}
2274 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
2275 		public DateTimeLiteralsContext(ParserRuleContext parent, int invokingState) {
2276 			super(parent, invokingState);
2277 		}
2278 		@Override public int getRuleIndex() { return RULE_dateTimeLiterals; }
2279 		@Override
2280 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2281 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDateTimeLiterals(this);
2282 			else return visitor.visitChildren(this);
2283 		}
2284 	}
2285 
2286 	public final DateTimeLiteralsContext dateTimeLiterals() throws RecognitionException {
2287 		DateTimeLiteralsContext _localctx = new DateTimeLiteralsContext(_ctx, getState());
2288 		enterRule(_localctx, 32, RULE_dateTimeLiterals);
2289 		int _la;
2290 		try {
2291 			setState(1176);
2292 			_errHandler.sync(this);
2293 			switch (_input.LA(1)) {
2294 			case DATE:
2295 			case TIME:
2296 			case TIMESTAMP:
2297 				enterOuterAlt(_localctx, 1);
2298 				{
2299 				setState(1169);
2300 				_la = _input.LA(1);
2301 				if ( !(((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (DATE - 135)) | (1L << (TIME - 135)) | (1L << (TIMESTAMP - 135)))) != 0)) ) {
2302 				_errHandler.recoverInline(this);
2303 				}
2304 				else {
2305 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2306 					_errHandler.reportMatch(this);
2307 					consume();
2308 				}
2309 				setState(1170);
2310 				match(STRING_);
2311 				}
2312 				break;
2313 			case LBE_:
2314 				enterOuterAlt(_localctx, 2);
2315 				{
2316 				setState(1171);
2317 				match(LBE_);
2318 				setState(1172);
2319 				identifier();
2320 				setState(1173);
2321 				match(STRING_);
2322 				setState(1174);
2323 				match(RBE_);
2324 				}
2325 				break;
2326 			default:
2327 				throw new NoViableAltException(this);
2328 			}
2329 		}
2330 		catch (RecognitionException re) {
2331 			_localctx.exception = re;
2332 			_errHandler.reportError(this, re);
2333 			_errHandler.recover(this, re);
2334 		}
2335 		finally {
2336 			exitRule();
2337 		}
2338 		return _localctx;
2339 	}
2340 
2341 	public static class HexadecimalLiteralsContext extends ParserRuleContext {
2342 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
2343 		public HexadecimalLiteralsContext(ParserRuleContext parent, int invokingState) {
2344 			super(parent, invokingState);
2345 		}
2346 		@Override public int getRuleIndex() { return RULE_hexadecimalLiterals; }
2347 		@Override
2348 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2349 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHexadecimalLiterals(this);
2350 			else return visitor.visitChildren(this);
2351 		}
2352 	}
2353 
2354 	public final HexadecimalLiteralsContext hexadecimalLiterals() throws RecognitionException {
2355 		HexadecimalLiteralsContext _localctx = new HexadecimalLiteralsContext(_ctx, getState());
2356 		enterRule(_localctx, 34, RULE_hexadecimalLiterals);
2357 		try {
2358 			enterOuterAlt(_localctx, 1);
2359 			{
2360 			setState(1178);
2361 			match(HEX_DIGIT_);
2362 			}
2363 		}
2364 		catch (RecognitionException re) {
2365 			_localctx.exception = re;
2366 			_errHandler.reportError(this, re);
2367 			_errHandler.recover(this, re);
2368 		}
2369 		finally {
2370 			exitRule();
2371 		}
2372 		return _localctx;
2373 	}
2374 
2375 	public static class BitValueLiteralsContext extends ParserRuleContext {
2376 		public TerminalNode BIT_NUM_() { return getToken(SQLServerStatementParser.BIT_NUM_, 0); }
2377 		public BitValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2378 			super(parent, invokingState);
2379 		}
2380 		@Override public int getRuleIndex() { return RULE_bitValueLiterals; }
2381 		@Override
2382 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2383 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitValueLiterals(this);
2384 			else return visitor.visitChildren(this);
2385 		}
2386 	}
2387 
2388 	public final BitValueLiteralsContext bitValueLiterals() throws RecognitionException {
2389 		BitValueLiteralsContext _localctx = new BitValueLiteralsContext(_ctx, getState());
2390 		enterRule(_localctx, 36, RULE_bitValueLiterals);
2391 		try {
2392 			enterOuterAlt(_localctx, 1);
2393 			{
2394 			setState(1180);
2395 			match(BIT_NUM_);
2396 			}
2397 		}
2398 		catch (RecognitionException re) {
2399 			_localctx.exception = re;
2400 			_errHandler.reportError(this, re);
2401 			_errHandler.recover(this, re);
2402 		}
2403 		finally {
2404 			exitRule();
2405 		}
2406 		return _localctx;
2407 	}
2408 
2409 	public static class BooleanLiteralsContext extends ParserRuleContext {
2410 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
2411 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
2412 		public BooleanLiteralsContext(ParserRuleContext parent, int invokingState) {
2413 			super(parent, invokingState);
2414 		}
2415 		@Override public int getRuleIndex() { return RULE_booleanLiterals; }
2416 		@Override
2417 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2418 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanLiterals(this);
2419 			else return visitor.visitChildren(this);
2420 		}
2421 	}
2422 
2423 	public final BooleanLiteralsContext booleanLiterals() throws RecognitionException {
2424 		BooleanLiteralsContext _localctx = new BooleanLiteralsContext(_ctx, getState());
2425 		enterRule(_localctx, 38, RULE_booleanLiterals);
2426 		int _la;
2427 		try {
2428 			enterOuterAlt(_localctx, 1);
2429 			{
2430 			setState(1182);
2431 			_la = _input.LA(1);
2432 			if ( !(_la==TRUE || _la==FALSE) ) {
2433 			_errHandler.recoverInline(this);
2434 			}
2435 			else {
2436 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2437 				_errHandler.reportMatch(this);
2438 				consume();
2439 			}
2440 			}
2441 		}
2442 		catch (RecognitionException re) {
2443 			_localctx.exception = re;
2444 			_errHandler.reportError(this, re);
2445 			_errHandler.recover(this, re);
2446 		}
2447 		finally {
2448 			exitRule();
2449 		}
2450 		return _localctx;
2451 	}
2452 
2453 	public static class NullValueLiteralsContext extends ParserRuleContext {
2454 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
2455 		public NullValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2456 			super(parent, invokingState);
2457 		}
2458 		@Override public int getRuleIndex() { return RULE_nullValueLiterals; }
2459 		@Override
2460 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2461 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullValueLiterals(this);
2462 			else return visitor.visitChildren(this);
2463 		}
2464 	}
2465 
2466 	public final NullValueLiteralsContext nullValueLiterals() throws RecognitionException {
2467 		NullValueLiteralsContext _localctx = new NullValueLiteralsContext(_ctx, getState());
2468 		enterRule(_localctx, 40, RULE_nullValueLiterals);
2469 		try {
2470 			enterOuterAlt(_localctx, 1);
2471 			{
2472 			setState(1184);
2473 			match(NULL);
2474 			}
2475 		}
2476 		catch (RecognitionException re) {
2477 			_localctx.exception = re;
2478 			_errHandler.reportError(this, re);
2479 			_errHandler.recover(this, re);
2480 		}
2481 		finally {
2482 			exitRule();
2483 		}
2484 		return _localctx;
2485 	}
2486 
2487 	public static class IdentifierContext extends ParserRuleContext {
2488 		public RegularIdentifierContext regularIdentifier() {
2489 			return getRuleContext(RegularIdentifierContext.class,0);
2490 		}
2491 		public DelimitedIdentifierContext delimitedIdentifier() {
2492 			return getRuleContext(DelimitedIdentifierContext.class,0);
2493 		}
2494 		public IdentifierContext(ParserRuleContext parent, int invokingState) {
2495 			super(parent, invokingState);
2496 		}
2497 		@Override public int getRuleIndex() { return RULE_identifier; }
2498 		@Override
2499 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2500 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIdentifier(this);
2501 			else return visitor.visitChildren(this);
2502 		}
2503 	}
2504 
2505 	public final IdentifierContext identifier() throws RecognitionException {
2506 		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
2507 		enterRule(_localctx, 42, RULE_identifier);
2508 		try {
2509 			setState(1188);
2510 			_errHandler.sync(this);
2511 			switch (_input.LA(1)) {
2512 			case TRUNCATE:
2513 			case SCHEMA:
2514 			case COLUMNS:
2515 			case PRECISION:
2516 			case FUNCTION:
2517 			case TRIGGER:
2518 			case CAST:
2519 			case TRIM:
2520 			case SUBSTRING:
2521 			case OFF:
2522 			case GROUP:
2523 			case LIMIT:
2524 			case OFFSET:
2525 			case SAVEPOINT:
2526 			case BOOLEAN:
2527 			case ARRAY:
2528 			case DATE:
2529 			case TIMESTAMP:
2530 			case LOCALTIME:
2531 			case LOCALTIMESTAMP:
2532 			case YEAR:
2533 			case QUARTER:
2534 			case MONTH:
2535 			case WEEK:
2536 			case DAY:
2537 			case SECOND:
2538 			case MICROSECOND:
2539 			case MAX:
2540 			case MIN:
2541 			case SUM:
2542 			case COUNT:
2543 			case AVG:
2544 			case ENABLE:
2545 			case DISABLE:
2546 			case INSTANCE:
2547 			case DO:
2548 			case DEFINER:
2549 			case SQL:
2550 			case CASCADED:
2551 			case LOCAL:
2552 			case NEXT:
2553 			case NAME:
2554 			case INTEGER:
2555 			case TYPE:
2556 			case TEXT:
2557 			case VIEWS:
2558 			case READ_ONLY:
2559 			case DATABASE:
2560 			case RETURNS:
2561 			case DATEPART:
2562 			case PASSWORD:
2563 			case BINARY:
2564 			case HIDDEN_:
2565 			case MOD:
2566 			case PARTITION:
2567 			case PARTITIONS:
2568 			case TOP:
2569 			case ROW:
2570 			case ROWS:
2571 			case XOR:
2572 			case ALWAYS:
2573 			case ROLE:
2574 			case START:
2575 			case ALGORITHM:
2576 			case AUTO:
2577 			case BLOCKERS:
2578 			case CLUSTERED:
2579 			case NONCLUSTERED:
2580 			case COLUMNSTORE:
2581 			case CONTENT:
2582 			case YEARS:
2583 			case MONTHS:
2584 			case WEEKS:
2585 			case DAYS:
2586 			case MINUTES:
2587 			case DENY:
2588 			case DETERMINISTIC:
2589 			case DISTRIBUTION:
2590 			case DOCUMENT:
2591 			case DURABILITY:
2592 			case ENCRYPTED:
2593 			case FILESTREAM:
2594 			case FILETABLE:
2595 			case FILLFACTOR:
2596 			case FOLLOWING:
2597 			case HASH:
2598 			case HEAP:
2599 			case INBOUND:
2600 			case OUTBOUND:
2601 			case UNBOUNDED:
2602 			case INFINITE:
2603 			case LOGIN:
2604 			case MASKED:
2605 			case MAXDOP:
2606 			case MOVE:
2607 			case NOCHECK:
2608 			case OBJECT:
2609 			case ONLINE:
2610 			case OVER:
2611 			case PAGE:
2612 			case PAUSED:
2613 			case PERIOD:
2614 			case PERSISTED:
2615 			case PRECEDING:
2616 			case RANDOMIZED:
2617 			case RANGE:
2618 			case REBUILD:
2619 			case REPLICATE:
2620 			case REPLICATION:
2621 			case RESUMABLE:
2622 			case ROWGUIDCOL:
2623 			case SAVE:
2624 			case SELF:
2625 			case SPARSE:
2626 			case SWITCH:
2627 			case TRAN:
2628 			case TRANCOUNT:
2629 			case CONTROL:
2630 			case CONCAT:
2631 			case TAKE:
2632 			case OWNERSHIP:
2633 			case DEFINITION:
2634 			case APPLICATION:
2635 			case ASSEMBLY:
2636 			case SYMMETRIC:
2637 			case ASYMMETRIC:
2638 			case SERVER:
2639 			case RECEIVE:
2640 			case CHANGE:
2641 			case TRACE:
2642 			case TRACKING:
2643 			case RESOURCES:
2644 			case SETTINGS:
2645 			case STATE:
2646 			case AVAILABILITY:
2647 			case CREDENTIAL:
2648 			case ENDPOINT:
2649 			case EVENT:
2650 			case NOTIFICATION:
2651 			case LINKED:
2652 			case AUDIT:
2653 			case DDL:
2654 			case XML:
2655 			case IMPERSONATE:
2656 			case SECURABLES:
2657 			case AUTHENTICATE:
2658 			case EXTERNAL:
2659 			case ACCESS:
2660 			case ADMINISTER:
2661 			case BULK:
2662 			case OPERATIONS:
2663 			case UNSAFE:
2664 			case SHUTDOWN:
2665 			case SCOPED:
2666 			case CONFIGURATION:
2667 			case DATASPACE:
2668 			case SERVICE:
2669 			case CERTIFICATE:
2670 			case CONTRACT:
2671 			case ENCRYPTION:
2672 			case MASTER:
2673 			case DATA:
2674 			case SOURCE:
2675 			case FILE:
2676 			case FORMAT:
2677 			case LIBRARY:
2678 			case FULLTEXT:
2679 			case MASK:
2680 			case UNMASK:
2681 			case MESSAGE:
2682 			case REMOTE:
2683 			case BINDING:
2684 			case ROUTE:
2685 			case SECURITY:
2686 			case POLICY:
2687 			case AGGREGATE:
2688 			case QUEUE:
2689 			case RULE:
2690 			case SYNONYM:
2691 			case COLLECTION:
2692 			case SCRIPT:
2693 			case KILL:
2694 			case BACKUP:
2695 			case LOG:
2696 			case SHOWPLAN:
2697 			case SUBSCRIBE:
2698 			case QUERY:
2699 			case NOTIFICATIONS:
2700 			case CHECKPOINT:
2701 			case SEQUENCE:
2702 			case ABORT_AFTER_WAIT:
2703 			case ALLOW_PAGE_LOCKS:
2704 			case ALLOW_ROW_LOCKS:
2705 			case ALL_SPARSE_COLUMNS:
2706 			case BUCKET_COUNT:
2707 			case COLUMNSTORE_ARCHIVE:
2708 			case COLUMN_ENCRYPTION_KEY:
2709 			case COLUMN_SET:
2710 			case COMPRESSION_DELAY:
2711 			case DATABASE_DEAULT:
2712 			case DATA_COMPRESSION:
2713 			case DATA_CONSISTENCY_CHECK:
2714 			case ENCRYPTION_TYPE:
2715 			case SYSTEM_TIME:
2716 			case SYSTEM_VERSIONING:
2717 			case TEXTIMAGE_ON:
2718 			case WAIT_AT_LOW_PRIORITY:
2719 			case STATISTICS_INCREMENTAL:
2720 			case STATISTICS_NORECOMPUTE:
2721 			case ROUND_ROBIN:
2722 			case SCHEMA_AND_DATA:
2723 			case SCHEMA_ONLY:
2724 			case SORT_IN_TEMPDB:
2725 			case IGNORE_DUP_KEY:
2726 			case IMPLICIT_TRANSACTIONS:
2727 			case MAX_DURATION:
2728 			case MEMORY_OPTIMIZED:
2729 			case MIGRATION_STATE:
2730 			case PAD_INDEX:
2731 			case REMOTE_DATA_ARCHIVE:
2732 			case FILESTREAM_ON:
2733 			case FILETABLE_COLLATE_FILENAME:
2734 			case FILETABLE_DIRECTORY:
2735 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
2736 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
2737 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
2738 			case FILTER_PREDICATE:
2739 			case HISTORY_RETENTION_PERIOD:
2740 			case HISTORY_TABLE:
2741 			case LOCK_ESCALATION:
2742 			case DROP_EXISTING:
2743 			case ROW_NUMBER:
2744 			case FIRST:
2745 			case DATETIME2:
2746 			case OUTPUT:
2747 			case INSERTED:
2748 			case DELETED:
2749 			case FILENAME:
2750 			case SIZE:
2751 			case MAXSIZE:
2752 			case FILEGROWTH:
2753 			case UNLIMITED:
2754 			case KB:
2755 			case MB:
2756 			case GB:
2757 			case TB:
2758 			case CONTAINS:
2759 			case MEMORY_OPTIMIZED_DATA:
2760 			case FILEGROUP:
2761 			case NON_TRANSACTED_ACCESS:
2762 			case DB_CHAINING:
2763 			case TRUSTWORTHY:
2764 			case FORWARD_ONLY:
2765 			case KEYSET:
2766 			case FAST_FORWARD:
2767 			case SCROLL_LOCKS:
2768 			case OPTIMISTIC:
2769 			case TYPE_WARNING:
2770 			case SCHEMABINDING:
2771 			case CALLER:
2772 			case INPUT:
2773 			case OWNER:
2774 			case SNAPSHOT:
2775 			case REPEATABLE:
2776 			case SERIALIZABLE:
2777 			case NATIVE_COMPILATION:
2778 			case VIEW_METADATA:
2779 			case INSTEAD:
2780 			case APPEND:
2781 			case INCREMENT:
2782 			case CACHE:
2783 			case MINVALUE:
2784 			case MAXVALUE:
2785 			case RESTART:
2786 			case LOB_COMPACTION:
2787 			case COMPRESS_ALL_ROW_GROUPS:
2788 			case REORGANIZE:
2789 			case RESUME:
2790 			case PAUSE:
2791 			case ABORT:
2792 			case ACCELERATED_DATABASE_RECOVERY:
2793 			case PERSISTENT_VERSION_STORE_FILEGROUP:
2794 			case IMMEDIATE:
2795 			case NO_WAIT:
2796 			case TARGET_RECOVERY_TIME:
2797 			case SECONDS:
2798 			case HONOR_BROKER_PRIORITY:
2799 			case ERROR_BROKER_CONVERSATIONS:
2800 			case NEW_BROKER:
2801 			case DISABLE_BROKER:
2802 			case ENABLE_BROKER:
2803 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
2804 			case READ_COMMITTED_SNAPSHOT:
2805 			case ALLOW_SNAPSHOT_ISOLATION:
2806 			case RECURSIVE_TRIGGERS:
2807 			case QUOTED_IDENTIFIER:
2808 			case NUMERIC_ROUNDABORT:
2809 			case CONCAT_NULL_YIELDS_NULL:
2810 			case COMPATIBILITY_LEVEL:
2811 			case ARITHABORT:
2812 			case ANSI_WARNINGS:
2813 			case ANSI_PADDING:
2814 			case ANSI_NULLS:
2815 			case ANSI_NULL_DEFAULT:
2816 			case PAGE_VERIFY:
2817 			case CHECKSUM:
2818 			case TORN_PAGE_DETECTION:
2819 			case BULK_LOGGED:
2820 			case RECOVERY:
2821 			case TOTAL_EXECUTION_CPU_TIME_MS:
2822 			case TOTAL_COMPILE_CPU_TIME_MS:
2823 			case STALE_CAPTURE_POLICY_THRESHOLD:
2824 			case EXECUTION_COUNT:
2825 			case QUERY_CAPTURE_POLICY:
2826 			case WAIT_STATS_CAPTURE_MODE:
2827 			case MAX_PLANS_PER_QUERY:
2828 			case QUERY_CAPTURE_MODE:
2829 			case SIZE_BASED_CLEANUP_MODE:
2830 			case INTERVAL_LENGTH_MINUTES:
2831 			case MAX_STORAGE_SIZE_MB:
2832 			case DATA_FLUSH_INTERVAL_SECONDS:
2833 			case CLEANUP_POLICY:
2834 			case CUSTOM:
2835 			case STALE_QUERY_THRESHOLD_DAYS:
2836 			case OPERATION_MODE:
2837 			case QUERY_STORE:
2838 			case CURSOR_DEFAULT:
2839 			case GLOBAL:
2840 			case CURSOR_CLOSE_ON_COMMIT:
2841 			case HOURS:
2842 			case CHANGE_RETENTION:
2843 			case AUTO_CLEANUP:
2844 			case CHANGE_TRACKING:
2845 			case AUTOMATIC_TUNING:
2846 			case FORCE_LAST_GOOD_PLAN:
2847 			case AUTO_UPDATE_STATISTICS_ASYNC:
2848 			case AUTO_UPDATE_STATISTICS:
2849 			case AUTO_SHRINK:
2850 			case AUTO_CREATE_STATISTICS:
2851 			case INCREMENTAL:
2852 			case AUTO_CLOSE:
2853 			case DATA_RETENTION:
2854 			case TEMPORAL_HISTORY_RETENTION:
2855 			case EDITION:
2856 			case MIXED_PAGE_ALLOCATION:
2857 			case DISABLED:
2858 			case ALLOWED:
2859 			case HADR:
2860 			case MULTI_USER:
2861 			case RESTRICTED_USER:
2862 			case SINGLE_USER:
2863 			case OFFLINE:
2864 			case EMERGENCY:
2865 			case SUSPEND:
2866 			case DATE_CORRELATION_OPTIMIZATION:
2867 			case ELASTIC_POOL:
2868 			case SERVICE_OBJECTIVE:
2869 			case DATABASE_NAME:
2870 			case ALLOW_CONNECTIONS:
2871 			case GEO:
2872 			case NAMED:
2873 			case DATEFIRST:
2874 			case BACKUP_STORAGE_REDUNDANCY:
2875 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
2876 			case SECONDARY:
2877 			case FAILOVER:
2878 			case DEFAULT_FULLTEXT_LANGUAGE:
2879 			case DEFAULT_LANGUAGE:
2880 			case INLINE:
2881 			case NESTED_TRIGGERS:
2882 			case TRANSFORM_NOISE_WORDS:
2883 			case TWO_DIGIT_YEAR_CUTOFF:
2884 			case PERSISTENT_LOG_BUFFER:
2885 			case DIRECTORY_NAME:
2886 			case DATEFORMAT:
2887 			case DELAYED_DURABILITY:
2888 			case AUTHORIZATION:
2889 			case TRANSFER:
2890 			case PROVIDER:
2891 			case SEARCH:
2892 			case MEMBER:
2893 			case IDENTIFIER_:
2894 				enterOuterAlt(_localctx, 1);
2895 				{
2896 				setState(1186);
2897 				regularIdentifier();
2898 				}
2899 				break;
2900 			case DELIMITED_IDENTIFIER_:
2901 				enterOuterAlt(_localctx, 2);
2902 				{
2903 				setState(1187);
2904 				delimitedIdentifier();
2905 				}
2906 				break;
2907 			default:
2908 				throw new NoViableAltException(this);
2909 			}
2910 		}
2911 		catch (RecognitionException re) {
2912 			_localctx.exception = re;
2913 			_errHandler.reportError(this, re);
2914 			_errHandler.recover(this, re);
2915 		}
2916 		finally {
2917 			exitRule();
2918 		}
2919 		return _localctx;
2920 	}
2921 
2922 	public static class RegularIdentifierContext extends ParserRuleContext {
2923 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
2924 		public UnreservedWordContext unreservedWord() {
2925 			return getRuleContext(UnreservedWordContext.class,0);
2926 		}
2927 		public RegularIdentifierContext(ParserRuleContext parent, int invokingState) {
2928 			super(parent, invokingState);
2929 		}
2930 		@Override public int getRuleIndex() { return RULE_regularIdentifier; }
2931 		@Override
2932 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2933 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularIdentifier(this);
2934 			else return visitor.visitChildren(this);
2935 		}
2936 	}
2937 
2938 	public final RegularIdentifierContext regularIdentifier() throws RecognitionException {
2939 		RegularIdentifierContext _localctx = new RegularIdentifierContext(_ctx, getState());
2940 		enterRule(_localctx, 44, RULE_regularIdentifier);
2941 		try {
2942 			setState(1192);
2943 			_errHandler.sync(this);
2944 			switch (_input.LA(1)) {
2945 			case IDENTIFIER_:
2946 				enterOuterAlt(_localctx, 1);
2947 				{
2948 				setState(1190);
2949 				match(IDENTIFIER_);
2950 				}
2951 				break;
2952 			case TRUNCATE:
2953 			case SCHEMA:
2954 			case COLUMNS:
2955 			case PRECISION:
2956 			case FUNCTION:
2957 			case TRIGGER:
2958 			case CAST:
2959 			case TRIM:
2960 			case SUBSTRING:
2961 			case OFF:
2962 			case GROUP:
2963 			case LIMIT:
2964 			case OFFSET:
2965 			case SAVEPOINT:
2966 			case BOOLEAN:
2967 			case ARRAY:
2968 			case DATE:
2969 			case TIMESTAMP:
2970 			case LOCALTIME:
2971 			case LOCALTIMESTAMP:
2972 			case YEAR:
2973 			case QUARTER:
2974 			case MONTH:
2975 			case WEEK:
2976 			case DAY:
2977 			case SECOND:
2978 			case MICROSECOND:
2979 			case MAX:
2980 			case MIN:
2981 			case SUM:
2982 			case COUNT:
2983 			case AVG:
2984 			case ENABLE:
2985 			case DISABLE:
2986 			case INSTANCE:
2987 			case DO:
2988 			case DEFINER:
2989 			case SQL:
2990 			case CASCADED:
2991 			case LOCAL:
2992 			case NEXT:
2993 			case NAME:
2994 			case INTEGER:
2995 			case TYPE:
2996 			case TEXT:
2997 			case VIEWS:
2998 			case READ_ONLY:
2999 			case DATABASE:
3000 			case RETURNS:
3001 			case DATEPART:
3002 			case PASSWORD:
3003 			case BINARY:
3004 			case HIDDEN_:
3005 			case MOD:
3006 			case PARTITION:
3007 			case PARTITIONS:
3008 			case TOP:
3009 			case ROW:
3010 			case ROWS:
3011 			case XOR:
3012 			case ALWAYS:
3013 			case ROLE:
3014 			case START:
3015 			case ALGORITHM:
3016 			case AUTO:
3017 			case BLOCKERS:
3018 			case CLUSTERED:
3019 			case NONCLUSTERED:
3020 			case COLUMNSTORE:
3021 			case CONTENT:
3022 			case YEARS:
3023 			case MONTHS:
3024 			case WEEKS:
3025 			case DAYS:
3026 			case MINUTES:
3027 			case DENY:
3028 			case DETERMINISTIC:
3029 			case DISTRIBUTION:
3030 			case DOCUMENT:
3031 			case DURABILITY:
3032 			case ENCRYPTED:
3033 			case FILESTREAM:
3034 			case FILETABLE:
3035 			case FILLFACTOR:
3036 			case FOLLOWING:
3037 			case HASH:
3038 			case HEAP:
3039 			case INBOUND:
3040 			case OUTBOUND:
3041 			case UNBOUNDED:
3042 			case INFINITE:
3043 			case LOGIN:
3044 			case MASKED:
3045 			case MAXDOP:
3046 			case MOVE:
3047 			case NOCHECK:
3048 			case OBJECT:
3049 			case ONLINE:
3050 			case OVER:
3051 			case PAGE:
3052 			case PAUSED:
3053 			case PERIOD:
3054 			case PERSISTED:
3055 			case PRECEDING:
3056 			case RANDOMIZED:
3057 			case RANGE:
3058 			case REBUILD:
3059 			case REPLICATE:
3060 			case REPLICATION:
3061 			case RESUMABLE:
3062 			case ROWGUIDCOL:
3063 			case SAVE:
3064 			case SELF:
3065 			case SPARSE:
3066 			case SWITCH:
3067 			case TRAN:
3068 			case TRANCOUNT:
3069 			case CONTROL:
3070 			case CONCAT:
3071 			case TAKE:
3072 			case OWNERSHIP:
3073 			case DEFINITION:
3074 			case APPLICATION:
3075 			case ASSEMBLY:
3076 			case SYMMETRIC:
3077 			case ASYMMETRIC:
3078 			case SERVER:
3079 			case RECEIVE:
3080 			case CHANGE:
3081 			case TRACE:
3082 			case TRACKING:
3083 			case RESOURCES:
3084 			case SETTINGS:
3085 			case STATE:
3086 			case AVAILABILITY:
3087 			case CREDENTIAL:
3088 			case ENDPOINT:
3089 			case EVENT:
3090 			case NOTIFICATION:
3091 			case LINKED:
3092 			case AUDIT:
3093 			case DDL:
3094 			case XML:
3095 			case IMPERSONATE:
3096 			case SECURABLES:
3097 			case AUTHENTICATE:
3098 			case EXTERNAL:
3099 			case ACCESS:
3100 			case ADMINISTER:
3101 			case BULK:
3102 			case OPERATIONS:
3103 			case UNSAFE:
3104 			case SHUTDOWN:
3105 			case SCOPED:
3106 			case CONFIGURATION:
3107 			case DATASPACE:
3108 			case SERVICE:
3109 			case CERTIFICATE:
3110 			case CONTRACT:
3111 			case ENCRYPTION:
3112 			case MASTER:
3113 			case DATA:
3114 			case SOURCE:
3115 			case FILE:
3116 			case FORMAT:
3117 			case LIBRARY:
3118 			case FULLTEXT:
3119 			case MASK:
3120 			case UNMASK:
3121 			case MESSAGE:
3122 			case REMOTE:
3123 			case BINDING:
3124 			case ROUTE:
3125 			case SECURITY:
3126 			case POLICY:
3127 			case AGGREGATE:
3128 			case QUEUE:
3129 			case RULE:
3130 			case SYNONYM:
3131 			case COLLECTION:
3132 			case SCRIPT:
3133 			case KILL:
3134 			case BACKUP:
3135 			case LOG:
3136 			case SHOWPLAN:
3137 			case SUBSCRIBE:
3138 			case QUERY:
3139 			case NOTIFICATIONS:
3140 			case CHECKPOINT:
3141 			case SEQUENCE:
3142 			case ABORT_AFTER_WAIT:
3143 			case ALLOW_PAGE_LOCKS:
3144 			case ALLOW_ROW_LOCKS:
3145 			case ALL_SPARSE_COLUMNS:
3146 			case BUCKET_COUNT:
3147 			case COLUMNSTORE_ARCHIVE:
3148 			case COLUMN_ENCRYPTION_KEY:
3149 			case COLUMN_SET:
3150 			case COMPRESSION_DELAY:
3151 			case DATABASE_DEAULT:
3152 			case DATA_COMPRESSION:
3153 			case DATA_CONSISTENCY_CHECK:
3154 			case ENCRYPTION_TYPE:
3155 			case SYSTEM_TIME:
3156 			case SYSTEM_VERSIONING:
3157 			case TEXTIMAGE_ON:
3158 			case WAIT_AT_LOW_PRIORITY:
3159 			case STATISTICS_INCREMENTAL:
3160 			case STATISTICS_NORECOMPUTE:
3161 			case ROUND_ROBIN:
3162 			case SCHEMA_AND_DATA:
3163 			case SCHEMA_ONLY:
3164 			case SORT_IN_TEMPDB:
3165 			case IGNORE_DUP_KEY:
3166 			case IMPLICIT_TRANSACTIONS:
3167 			case MAX_DURATION:
3168 			case MEMORY_OPTIMIZED:
3169 			case MIGRATION_STATE:
3170 			case PAD_INDEX:
3171 			case REMOTE_DATA_ARCHIVE:
3172 			case FILESTREAM_ON:
3173 			case FILETABLE_COLLATE_FILENAME:
3174 			case FILETABLE_DIRECTORY:
3175 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
3176 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
3177 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
3178 			case FILTER_PREDICATE:
3179 			case HISTORY_RETENTION_PERIOD:
3180 			case HISTORY_TABLE:
3181 			case LOCK_ESCALATION:
3182 			case DROP_EXISTING:
3183 			case ROW_NUMBER:
3184 			case FIRST:
3185 			case DATETIME2:
3186 			case OUTPUT:
3187 			case INSERTED:
3188 			case DELETED:
3189 			case FILENAME:
3190 			case SIZE:
3191 			case MAXSIZE:
3192 			case FILEGROWTH:
3193 			case UNLIMITED:
3194 			case KB:
3195 			case MB:
3196 			case GB:
3197 			case TB:
3198 			case CONTAINS:
3199 			case MEMORY_OPTIMIZED_DATA:
3200 			case FILEGROUP:
3201 			case NON_TRANSACTED_ACCESS:
3202 			case DB_CHAINING:
3203 			case TRUSTWORTHY:
3204 			case FORWARD_ONLY:
3205 			case KEYSET:
3206 			case FAST_FORWARD:
3207 			case SCROLL_LOCKS:
3208 			case OPTIMISTIC:
3209 			case TYPE_WARNING:
3210 			case SCHEMABINDING:
3211 			case CALLER:
3212 			case INPUT:
3213 			case OWNER:
3214 			case SNAPSHOT:
3215 			case REPEATABLE:
3216 			case SERIALIZABLE:
3217 			case NATIVE_COMPILATION:
3218 			case VIEW_METADATA:
3219 			case INSTEAD:
3220 			case APPEND:
3221 			case INCREMENT:
3222 			case CACHE:
3223 			case MINVALUE:
3224 			case MAXVALUE:
3225 			case RESTART:
3226 			case LOB_COMPACTION:
3227 			case COMPRESS_ALL_ROW_GROUPS:
3228 			case REORGANIZE:
3229 			case RESUME:
3230 			case PAUSE:
3231 			case ABORT:
3232 			case ACCELERATED_DATABASE_RECOVERY:
3233 			case PERSISTENT_VERSION_STORE_FILEGROUP:
3234 			case IMMEDIATE:
3235 			case NO_WAIT:
3236 			case TARGET_RECOVERY_TIME:
3237 			case SECONDS:
3238 			case HONOR_BROKER_PRIORITY:
3239 			case ERROR_BROKER_CONVERSATIONS:
3240 			case NEW_BROKER:
3241 			case DISABLE_BROKER:
3242 			case ENABLE_BROKER:
3243 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
3244 			case READ_COMMITTED_SNAPSHOT:
3245 			case ALLOW_SNAPSHOT_ISOLATION:
3246 			case RECURSIVE_TRIGGERS:
3247 			case QUOTED_IDENTIFIER:
3248 			case NUMERIC_ROUNDABORT:
3249 			case CONCAT_NULL_YIELDS_NULL:
3250 			case COMPATIBILITY_LEVEL:
3251 			case ARITHABORT:
3252 			case ANSI_WARNINGS:
3253 			case ANSI_PADDING:
3254 			case ANSI_NULLS:
3255 			case ANSI_NULL_DEFAULT:
3256 			case PAGE_VERIFY:
3257 			case CHECKSUM:
3258 			case TORN_PAGE_DETECTION:
3259 			case BULK_LOGGED:
3260 			case RECOVERY:
3261 			case TOTAL_EXECUTION_CPU_TIME_MS:
3262 			case TOTAL_COMPILE_CPU_TIME_MS:
3263 			case STALE_CAPTURE_POLICY_THRESHOLD:
3264 			case EXECUTION_COUNT:
3265 			case QUERY_CAPTURE_POLICY:
3266 			case WAIT_STATS_CAPTURE_MODE:
3267 			case MAX_PLANS_PER_QUERY:
3268 			case QUERY_CAPTURE_MODE:
3269 			case SIZE_BASED_CLEANUP_MODE:
3270 			case INTERVAL_LENGTH_MINUTES:
3271 			case MAX_STORAGE_SIZE_MB:
3272 			case DATA_FLUSH_INTERVAL_SECONDS:
3273 			case CLEANUP_POLICY:
3274 			case CUSTOM:
3275 			case STALE_QUERY_THRESHOLD_DAYS:
3276 			case OPERATION_MODE:
3277 			case QUERY_STORE:
3278 			case CURSOR_DEFAULT:
3279 			case GLOBAL:
3280 			case CURSOR_CLOSE_ON_COMMIT:
3281 			case HOURS:
3282 			case CHANGE_RETENTION:
3283 			case AUTO_CLEANUP:
3284 			case CHANGE_TRACKING:
3285 			case AUTOMATIC_TUNING:
3286 			case FORCE_LAST_GOOD_PLAN:
3287 			case AUTO_UPDATE_STATISTICS_ASYNC:
3288 			case AUTO_UPDATE_STATISTICS:
3289 			case AUTO_SHRINK:
3290 			case AUTO_CREATE_STATISTICS:
3291 			case INCREMENTAL:
3292 			case AUTO_CLOSE:
3293 			case DATA_RETENTION:
3294 			case TEMPORAL_HISTORY_RETENTION:
3295 			case EDITION:
3296 			case MIXED_PAGE_ALLOCATION:
3297 			case DISABLED:
3298 			case ALLOWED:
3299 			case HADR:
3300 			case MULTI_USER:
3301 			case RESTRICTED_USER:
3302 			case SINGLE_USER:
3303 			case OFFLINE:
3304 			case EMERGENCY:
3305 			case SUSPEND:
3306 			case DATE_CORRELATION_OPTIMIZATION:
3307 			case ELASTIC_POOL:
3308 			case SERVICE_OBJECTIVE:
3309 			case DATABASE_NAME:
3310 			case ALLOW_CONNECTIONS:
3311 			case GEO:
3312 			case NAMED:
3313 			case DATEFIRST:
3314 			case BACKUP_STORAGE_REDUNDANCY:
3315 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
3316 			case SECONDARY:
3317 			case FAILOVER:
3318 			case DEFAULT_FULLTEXT_LANGUAGE:
3319 			case DEFAULT_LANGUAGE:
3320 			case INLINE:
3321 			case NESTED_TRIGGERS:
3322 			case TRANSFORM_NOISE_WORDS:
3323 			case TWO_DIGIT_YEAR_CUTOFF:
3324 			case PERSISTENT_LOG_BUFFER:
3325 			case DIRECTORY_NAME:
3326 			case DATEFORMAT:
3327 			case DELAYED_DURABILITY:
3328 			case AUTHORIZATION:
3329 			case TRANSFER:
3330 			case PROVIDER:
3331 			case SEARCH:
3332 			case MEMBER:
3333 				enterOuterAlt(_localctx, 2);
3334 				{
3335 				setState(1191);
3336 				unreservedWord();
3337 				}
3338 				break;
3339 			default:
3340 				throw new NoViableAltException(this);
3341 			}
3342 		}
3343 		catch (RecognitionException re) {
3344 			_localctx.exception = re;
3345 			_errHandler.reportError(this, re);
3346 			_errHandler.recover(this, re);
3347 		}
3348 		finally {
3349 			exitRule();
3350 		}
3351 		return _localctx;
3352 	}
3353 
3354 	public static class DelimitedIdentifierContext extends ParserRuleContext {
3355 		public TerminalNode DELIMITED_IDENTIFIER_() { return getToken(SQLServerStatementParser.DELIMITED_IDENTIFIER_, 0); }
3356 		public DelimitedIdentifierContext(ParserRuleContext parent, int invokingState) {
3357 			super(parent, invokingState);
3358 		}
3359 		@Override public int getRuleIndex() { return RULE_delimitedIdentifier; }
3360 		@Override
3361 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3362 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelimitedIdentifier(this);
3363 			else return visitor.visitChildren(this);
3364 		}
3365 	}
3366 
3367 	public final DelimitedIdentifierContext delimitedIdentifier() throws RecognitionException {
3368 		DelimitedIdentifierContext _localctx = new DelimitedIdentifierContext(_ctx, getState());
3369 		enterRule(_localctx, 46, RULE_delimitedIdentifier);
3370 		try {
3371 			enterOuterAlt(_localctx, 1);
3372 			{
3373 			setState(1194);
3374 			match(DELIMITED_IDENTIFIER_);
3375 			}
3376 		}
3377 		catch (RecognitionException re) {
3378 			_localctx.exception = re;
3379 			_errHandler.reportError(this, re);
3380 			_errHandler.recover(this, re);
3381 		}
3382 		finally {
3383 			exitRule();
3384 		}
3385 		return _localctx;
3386 	}
3387 
3388 	public static class UnreservedWordContext extends ParserRuleContext {
3389 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
3390 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
3391 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
3392 		public TerminalNode LIMIT() { return getToken(SQLServerStatementParser.LIMIT, 0); }
3393 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
3394 		public TerminalNode SAVEPOINT() { return getToken(SQLServerStatementParser.SAVEPOINT, 0); }
3395 		public TerminalNode BOOLEAN() { return getToken(SQLServerStatementParser.BOOLEAN, 0); }
3396 		public TerminalNode ARRAY() { return getToken(SQLServerStatementParser.ARRAY, 0); }
3397 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
3398 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
3399 		public TerminalNode QUARTER() { return getToken(SQLServerStatementParser.QUARTER, 0); }
3400 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
3401 		public TerminalNode MICROSECOND() { return getToken(SQLServerStatementParser.MICROSECOND, 0); }
3402 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
3403 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
3404 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
3405 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
3406 		public TerminalNode MOD() { return getToken(SQLServerStatementParser.MOD, 0); }
3407 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
3408 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
3409 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
3410 		public TerminalNode XOR() { return getToken(SQLServerStatementParser.XOR, 0); }
3411 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
3412 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
3413 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
3414 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
3415 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
3416 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
3417 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
3418 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
3419 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
3420 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
3421 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
3422 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
3423 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
3424 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
3425 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
3426 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
3427 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
3428 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
3429 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
3430 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
3431 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
3432 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
3433 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
3434 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
3435 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
3436 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
3437 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
3438 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
3439 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
3440 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
3441 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
3442 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
3443 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
3444 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
3445 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
3446 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
3447 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
3448 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
3449 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
3450 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
3451 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
3452 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
3453 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
3454 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
3455 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
3456 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
3457 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
3458 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
3459 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
3460 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
3461 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
3462 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
3463 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
3464 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
3465 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
3466 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
3467 		public TerminalNode TRANCOUNT() { return getToken(SQLServerStatementParser.TRANCOUNT, 0); }
3468 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
3469 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
3470 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
3471 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
3472 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
3473 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
3474 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
3475 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
3476 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
3477 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
3478 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
3479 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
3480 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
3481 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
3482 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
3483 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
3484 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
3485 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
3486 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
3487 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
3488 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
3489 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
3490 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
3491 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
3492 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
3493 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
3494 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
3495 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
3496 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
3497 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
3498 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
3499 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
3500 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
3501 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
3502 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
3503 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
3504 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
3505 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
3506 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
3507 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
3508 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
3509 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
3510 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
3511 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
3512 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
3513 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
3514 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
3515 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
3516 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
3517 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
3518 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
3519 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
3520 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
3521 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
3522 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
3523 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
3524 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
3525 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
3526 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
3527 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
3528 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
3529 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
3530 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
3531 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
3532 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
3533 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
3534 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
3535 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
3536 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
3537 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
3538 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
3539 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
3540 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
3541 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
3542 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
3543 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
3544 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
3545 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
3546 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
3547 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
3548 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
3549 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
3550 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
3551 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
3552 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
3553 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
3554 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
3555 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
3556 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
3557 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
3558 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
3559 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
3560 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
3561 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
3562 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
3563 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
3564 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
3565 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
3566 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
3567 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
3568 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
3569 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
3570 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
3571 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
3572 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
3573 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
3574 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
3575 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
3576 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
3577 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
3578 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
3579 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
3580 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
3581 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
3582 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
3583 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
3584 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
3585 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
3586 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
3587 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
3588 		public TerminalNode INSTANCE() { return getToken(SQLServerStatementParser.INSTANCE, 0); }
3589 		public TerminalNode DO() { return getToken(SQLServerStatementParser.DO, 0); }
3590 		public TerminalNode DEFINER() { return getToken(SQLServerStatementParser.DEFINER, 0); }
3591 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
3592 		public TerminalNode CASCADED() { return getToken(SQLServerStatementParser.CASCADED, 0); }
3593 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
3594 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
3595 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
3596 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
3597 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
3598 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
3599 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
3600 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
3601 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
3602 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
3603 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
3604 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
3605 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
3606 		public TerminalNode KB() { return getToken(SQLServerStatementParser.KB, 0); }
3607 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
3608 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
3609 		public TerminalNode TB() { return getToken(SQLServerStatementParser.TB, 0); }
3610 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
3611 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
3612 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
3613 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
3614 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
3615 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
3616 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
3617 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
3618 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
3619 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
3620 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
3621 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
3622 		public TerminalNode DATEPART() { return getToken(SQLServerStatementParser.DATEPART, 0); }
3623 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
3624 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
3625 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
3626 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
3627 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
3628 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
3629 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
3630 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
3631 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
3632 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
3633 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
3634 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
3635 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
3636 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
3637 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
3638 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
3639 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
3640 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
3641 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
3642 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
3643 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
3644 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
3645 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
3646 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
3647 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
3648 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
3649 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
3650 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
3651 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
3652 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
3653 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
3654 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
3655 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
3656 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
3657 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
3658 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
3659 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
3660 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
3661 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
3662 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
3663 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
3664 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
3665 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
3666 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
3667 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
3668 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
3669 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
3670 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
3671 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
3672 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
3673 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
3674 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
3675 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
3676 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
3677 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
3678 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
3679 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
3680 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
3681 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
3682 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
3683 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
3684 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
3685 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
3686 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
3687 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
3688 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
3689 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
3690 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
3691 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
3692 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
3693 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
3694 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
3695 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
3696 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
3697 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
3698 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
3699 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
3700 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
3701 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
3702 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
3703 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
3704 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
3705 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
3706 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
3707 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
3708 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
3709 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
3710 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
3711 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
3712 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
3713 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
3714 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
3715 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
3716 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
3717 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
3718 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
3719 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
3720 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
3721 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
3722 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
3723 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
3724 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
3725 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
3726 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
3727 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
3728 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
3729 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
3730 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
3731 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
3732 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
3733 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
3734 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
3735 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
3736 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
3737 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
3738 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
3739 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
3740 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
3741 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
3742 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
3743 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
3744 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
3745 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
3746 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
3747 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
3748 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
3749 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
3750 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
3751 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
3752 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
3753 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
3754 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
3755 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
3756 		public TerminalNode SECOND() { return getToken(SQLServerStatementParser.SECOND, 0); }
3757 		public TerminalNode PRECISION() { return getToken(SQLServerStatementParser.PRECISION, 0); }
3758 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
3759 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
3760 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
3761 		public TerminalNode SUBSTRING() { return getToken(SQLServerStatementParser.SUBSTRING, 0); }
3762 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
3763 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
3764 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
3765 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
3766 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
3767 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
3768 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
3769 		public TerminalNode TRIM() { return getToken(SQLServerStatementParser.TRIM, 0); }
3770 		public UnreservedWordContext(ParserRuleContext parent, int invokingState) {
3771 			super(parent, invokingState);
3772 		}
3773 		@Override public int getRuleIndex() { return RULE_unreservedWord; }
3774 		@Override
3775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnreservedWord(this);
3777 			else return visitor.visitChildren(this);
3778 		}
3779 	}
3780 
3781 	public final UnreservedWordContext unreservedWord() throws RecognitionException {
3782 		UnreservedWordContext _localctx = new UnreservedWordContext(_ctx, getState());
3783 		enterRule(_localctx, 48, RULE_unreservedWord);
3784 		int _la;
3785 		try {
3786 			enterOuterAlt(_localctx, 1);
3787 			{
3788 			setState(1196);
3789 			_la = _input.LA(1);
3790 			if ( !(((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0)) ) {
3791 			_errHandler.recoverInline(this);
3792 			}
3793 			else {
3794 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
3795 				_errHandler.reportMatch(this);
3796 				consume();
3797 			}
3798 			}
3799 		}
3800 		catch (RecognitionException re) {
3801 			_localctx.exception = re;
3802 			_errHandler.reportError(this, re);
3803 			_errHandler.recover(this, re);
3804 		}
3805 		finally {
3806 			exitRule();
3807 		}
3808 		return _localctx;
3809 	}
3810 
3811 	public static class DatabaseNameContext extends ParserRuleContext {
3812 		public IdentifierContext identifier() {
3813 			return getRuleContext(IdentifierContext.class,0);
3814 		}
3815 		public DatabaseNameContext(ParserRuleContext parent, int invokingState) {
3816 			super(parent, invokingState);
3817 		}
3818 		@Override public int getRuleIndex() { return RULE_databaseName; }
3819 		@Override
3820 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3821 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseName(this);
3822 			else return visitor.visitChildren(this);
3823 		}
3824 	}
3825 
3826 	public final DatabaseNameContext databaseName() throws RecognitionException {
3827 		DatabaseNameContext _localctx = new DatabaseNameContext(_ctx, getState());
3828 		enterRule(_localctx, 50, RULE_databaseName);
3829 		try {
3830 			enterOuterAlt(_localctx, 1);
3831 			{
3832 			setState(1198);
3833 			identifier();
3834 			}
3835 		}
3836 		catch (RecognitionException re) {
3837 			_localctx.exception = re;
3838 			_errHandler.reportError(this, re);
3839 			_errHandler.recover(this, re);
3840 		}
3841 		finally {
3842 			exitRule();
3843 		}
3844 		return _localctx;
3845 	}
3846 
3847 	public static class SchemaNameContext extends ParserRuleContext {
3848 		public IdentifierContext identifier() {
3849 			return getRuleContext(IdentifierContext.class,0);
3850 		}
3851 		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
3852 			super(parent, invokingState);
3853 		}
3854 		@Override public int getRuleIndex() { return RULE_schemaName; }
3855 		@Override
3856 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3857 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaName(this);
3858 			else return visitor.visitChildren(this);
3859 		}
3860 	}
3861 
3862 	public final SchemaNameContext schemaName() throws RecognitionException {
3863 		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
3864 		enterRule(_localctx, 52, RULE_schemaName);
3865 		try {
3866 			enterOuterAlt(_localctx, 1);
3867 			{
3868 			setState(1200);
3869 			identifier();
3870 			}
3871 		}
3872 		catch (RecognitionException re) {
3873 			_localctx.exception = re;
3874 			_errHandler.reportError(this, re);
3875 			_errHandler.recover(this, re);
3876 		}
3877 		finally {
3878 			exitRule();
3879 		}
3880 		return _localctx;
3881 	}
3882 
3883 	public static class FunctionNameContext extends ParserRuleContext {
3884 		public NameContext name() {
3885 			return getRuleContext(NameContext.class,0);
3886 		}
3887 		public OwnerContext owner() {
3888 			return getRuleContext(OwnerContext.class,0);
3889 		}
3890 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3891 		public FunctionNameContext(ParserRuleContext parent, int invokingState) {
3892 			super(parent, invokingState);
3893 		}
3894 		@Override public int getRuleIndex() { return RULE_functionName; }
3895 		@Override
3896 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3897 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionName(this);
3898 			else return visitor.visitChildren(this);
3899 		}
3900 	}
3901 
3902 	public final FunctionNameContext functionName() throws RecognitionException {
3903 		FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
3904 		enterRule(_localctx, 54, RULE_functionName);
3905 		try {
3906 			enterOuterAlt(_localctx, 1);
3907 			{
3908 			setState(1205);
3909 			_errHandler.sync(this);
3910 			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
3911 			case 1:
3912 				{
3913 				setState(1202);
3914 				owner();
3915 				setState(1203);
3916 				match(DOT_);
3917 				}
3918 				break;
3919 			}
3920 			setState(1207);
3921 			name();
3922 			}
3923 		}
3924 		catch (RecognitionException re) {
3925 			_localctx.exception = re;
3926 			_errHandler.reportError(this, re);
3927 			_errHandler.recover(this, re);
3928 		}
3929 		finally {
3930 			exitRule();
3931 		}
3932 		return _localctx;
3933 	}
3934 
3935 	public static class ProcedureNameContext extends ParserRuleContext {
3936 		public NameContext name() {
3937 			return getRuleContext(NameContext.class,0);
3938 		}
3939 		public OwnerContext owner() {
3940 			return getRuleContext(OwnerContext.class,0);
3941 		}
3942 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3943 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
3944 		public NumberLiteralsContext numberLiterals() {
3945 			return getRuleContext(NumberLiteralsContext.class,0);
3946 		}
3947 		public ProcedureNameContext(ParserRuleContext parent, int invokingState) {
3948 			super(parent, invokingState);
3949 		}
3950 		@Override public int getRuleIndex() { return RULE_procedureName; }
3951 		@Override
3952 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3953 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcedureName(this);
3954 			else return visitor.visitChildren(this);
3955 		}
3956 	}
3957 
3958 	public final ProcedureNameContext procedureName() throws RecognitionException {
3959 		ProcedureNameContext _localctx = new ProcedureNameContext(_ctx, getState());
3960 		enterRule(_localctx, 56, RULE_procedureName);
3961 		try {
3962 			enterOuterAlt(_localctx, 1);
3963 			{
3964 			setState(1212);
3965 			_errHandler.sync(this);
3966 			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
3967 			case 1:
3968 				{
3969 				setState(1209);
3970 				owner();
3971 				setState(1210);
3972 				match(DOT_);
3973 				}
3974 				break;
3975 			}
3976 			setState(1214);
3977 			name();
3978 			setState(1217);
3979 			_errHandler.sync(this);
3980 			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
3981 			case 1:
3982 				{
3983 				setState(1215);
3984 				match(SEMI_);
3985 				setState(1216);
3986 				numberLiterals();
3987 				}
3988 				break;
3989 			}
3990 			}
3991 		}
3992 		catch (RecognitionException re) {
3993 			_localctx.exception = re;
3994 			_errHandler.reportError(this, re);
3995 			_errHandler.recover(this, re);
3996 		}
3997 		finally {
3998 			exitRule();
3999 		}
4000 		return _localctx;
4001 	}
4002 
4003 	public static class ViewNameContext extends ParserRuleContext {
4004 		public NameContext name() {
4005 			return getRuleContext(NameContext.class,0);
4006 		}
4007 		public OwnerContext owner() {
4008 			return getRuleContext(OwnerContext.class,0);
4009 		}
4010 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4011 		public ViewNameContext(ParserRuleContext parent, int invokingState) {
4012 			super(parent, invokingState);
4013 		}
4014 		@Override public int getRuleIndex() { return RULE_viewName; }
4015 		@Override
4016 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4017 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewName(this);
4018 			else return visitor.visitChildren(this);
4019 		}
4020 	}
4021 
4022 	public final ViewNameContext viewName() throws RecognitionException {
4023 		ViewNameContext _localctx = new ViewNameContext(_ctx, getState());
4024 		enterRule(_localctx, 58, RULE_viewName);
4025 		try {
4026 			enterOuterAlt(_localctx, 1);
4027 			{
4028 			setState(1222);
4029 			_errHandler.sync(this);
4030 			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
4031 			case 1:
4032 				{
4033 				setState(1219);
4034 				owner();
4035 				setState(1220);
4036 				match(DOT_);
4037 				}
4038 				break;
4039 			}
4040 			setState(1224);
4041 			name();
4042 			}
4043 		}
4044 		catch (RecognitionException re) {
4045 			_localctx.exception = re;
4046 			_errHandler.reportError(this, re);
4047 			_errHandler.recover(this, re);
4048 		}
4049 		finally {
4050 			exitRule();
4051 		}
4052 		return _localctx;
4053 	}
4054 
4055 	public static class TriggerNameContext extends ParserRuleContext {
4056 		public NameContext name() {
4057 			return getRuleContext(NameContext.class,0);
4058 		}
4059 		public SchemaNameContext schemaName() {
4060 			return getRuleContext(SchemaNameContext.class,0);
4061 		}
4062 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4063 		public TriggerNameContext(ParserRuleContext parent, int invokingState) {
4064 			super(parent, invokingState);
4065 		}
4066 		@Override public int getRuleIndex() { return RULE_triggerName; }
4067 		@Override
4068 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4069 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerName(this);
4070 			else return visitor.visitChildren(this);
4071 		}
4072 	}
4073 
4074 	public final TriggerNameContext triggerName() throws RecognitionException {
4075 		TriggerNameContext _localctx = new TriggerNameContext(_ctx, getState());
4076 		enterRule(_localctx, 60, RULE_triggerName);
4077 		try {
4078 			enterOuterAlt(_localctx, 1);
4079 			{
4080 			setState(1229);
4081 			_errHandler.sync(this);
4082 			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
4083 			case 1:
4084 				{
4085 				setState(1226);
4086 				schemaName();
4087 				setState(1227);
4088 				match(DOT_);
4089 				}
4090 				break;
4091 			}
4092 			setState(1231);
4093 			name();
4094 			}
4095 		}
4096 		catch (RecognitionException re) {
4097 			_localctx.exception = re;
4098 			_errHandler.reportError(this, re);
4099 			_errHandler.recover(this, re);
4100 		}
4101 		finally {
4102 			exitRule();
4103 		}
4104 		return _localctx;
4105 	}
4106 
4107 	public static class SequenceNameContext extends ParserRuleContext {
4108 		public NameContext name() {
4109 			return getRuleContext(NameContext.class,0);
4110 		}
4111 		public SchemaNameContext schemaName() {
4112 			return getRuleContext(SchemaNameContext.class,0);
4113 		}
4114 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4115 		public SequenceNameContext(ParserRuleContext parent, int invokingState) {
4116 			super(parent, invokingState);
4117 		}
4118 		@Override public int getRuleIndex() { return RULE_sequenceName; }
4119 		@Override
4120 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4121 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSequenceName(this);
4122 			else return visitor.visitChildren(this);
4123 		}
4124 	}
4125 
4126 	public final SequenceNameContext sequenceName() throws RecognitionException {
4127 		SequenceNameContext _localctx = new SequenceNameContext(_ctx, getState());
4128 		enterRule(_localctx, 62, RULE_sequenceName);
4129 		try {
4130 			enterOuterAlt(_localctx, 1);
4131 			{
4132 			setState(1236);
4133 			_errHandler.sync(this);
4134 			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
4135 			case 1:
4136 				{
4137 				setState(1233);
4138 				schemaName();
4139 				setState(1234);
4140 				match(DOT_);
4141 				}
4142 				break;
4143 			}
4144 			setState(1238);
4145 			name();
4146 			}
4147 		}
4148 		catch (RecognitionException re) {
4149 			_localctx.exception = re;
4150 			_errHandler.reportError(this, re);
4151 			_errHandler.recover(this, re);
4152 		}
4153 		finally {
4154 			exitRule();
4155 		}
4156 		return _localctx;
4157 	}
4158 
4159 	public static class TableNameContext extends ParserRuleContext {
4160 		public NameContext name() {
4161 			return getRuleContext(NameContext.class,0);
4162 		}
4163 		public DatabaseNameContext databaseName() {
4164 			return getRuleContext(DatabaseNameContext.class,0);
4165 		}
4166 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4167 		public TerminalNode DOT_(int i) {
4168 			return getToken(SQLServerStatementParser.DOT_, i);
4169 		}
4170 		public OwnerContext owner() {
4171 			return getRuleContext(OwnerContext.class,0);
4172 		}
4173 		public TableNameContext(ParserRuleContext parent, int invokingState) {
4174 			super(parent, invokingState);
4175 		}
4176 		@Override public int getRuleIndex() { return RULE_tableName; }
4177 		@Override
4178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableName(this);
4180 			else return visitor.visitChildren(this);
4181 		}
4182 	}
4183 
4184 	public final TableNameContext tableName() throws RecognitionException {
4185 		TableNameContext _localctx = new TableNameContext(_ctx, getState());
4186 		enterRule(_localctx, 64, RULE_tableName);
4187 		int _la;
4188 		try {
4189 			enterOuterAlt(_localctx, 1);
4190 			{
4191 			setState(1243);
4192 			_errHandler.sync(this);
4193 			switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
4194 			case 1:
4195 				{
4196 				setState(1240);
4197 				databaseName();
4198 				setState(1241);
4199 				match(DOT_);
4200 				}
4201 				break;
4202 			}
4203 			setState(1249);
4204 			_errHandler.sync(this);
4205 			switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
4206 			case 1:
4207 				{
4208 				setState(1246);
4209 				_errHandler.sync(this);
4210 				_la = _input.LA(1);
4211 				if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
4212 					{
4213 					setState(1245);
4214 					owner();
4215 					}
4216 				}
4217 
4218 				setState(1248);
4219 				match(DOT_);
4220 				}
4221 				break;
4222 			}
4223 			setState(1251);
4224 			name();
4225 			}
4226 		}
4227 		catch (RecognitionException re) {
4228 			_localctx.exception = re;
4229 			_errHandler.reportError(this, re);
4230 			_errHandler.recover(this, re);
4231 		}
4232 		finally {
4233 			exitRule();
4234 		}
4235 		return _localctx;
4236 	}
4237 
4238 	public static class QueueNameContext extends ParserRuleContext {
4239 		public NameContext name() {
4240 			return getRuleContext(NameContext.class,0);
4241 		}
4242 		public SchemaNameContext schemaName() {
4243 			return getRuleContext(SchemaNameContext.class,0);
4244 		}
4245 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4246 		public QueueNameContext(ParserRuleContext parent, int invokingState) {
4247 			super(parent, invokingState);
4248 		}
4249 		@Override public int getRuleIndex() { return RULE_queueName; }
4250 		@Override
4251 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4252 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueueName(this);
4253 			else return visitor.visitChildren(this);
4254 		}
4255 	}
4256 
4257 	public final QueueNameContext queueName() throws RecognitionException {
4258 		QueueNameContext _localctx = new QueueNameContext(_ctx, getState());
4259 		enterRule(_localctx, 66, RULE_queueName);
4260 		try {
4261 			enterOuterAlt(_localctx, 1);
4262 			{
4263 			setState(1256);
4264 			_errHandler.sync(this);
4265 			switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
4266 			case 1:
4267 				{
4268 				setState(1253);
4269 				schemaName();
4270 				setState(1254);
4271 				match(DOT_);
4272 				}
4273 				break;
4274 			}
4275 			setState(1258);
4276 			name();
4277 			}
4278 		}
4279 		catch (RecognitionException re) {
4280 			_localctx.exception = re;
4281 			_errHandler.reportError(this, re);
4282 			_errHandler.recover(this, re);
4283 		}
4284 		finally {
4285 			exitRule();
4286 		}
4287 		return _localctx;
4288 	}
4289 
4290 	public static class ContractNameContext extends ParserRuleContext {
4291 		public NameContext name() {
4292 			return getRuleContext(NameContext.class,0);
4293 		}
4294 		public ContractNameContext(ParserRuleContext parent, int invokingState) {
4295 			super(parent, invokingState);
4296 		}
4297 		@Override public int getRuleIndex() { return RULE_contractName; }
4298 		@Override
4299 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4300 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitContractName(this);
4301 			else return visitor.visitChildren(this);
4302 		}
4303 	}
4304 
4305 	public final ContractNameContext contractName() throws RecognitionException {
4306 		ContractNameContext _localctx = new ContractNameContext(_ctx, getState());
4307 		enterRule(_localctx, 68, RULE_contractName);
4308 		try {
4309 			enterOuterAlt(_localctx, 1);
4310 			{
4311 			setState(1260);
4312 			name();
4313 			}
4314 		}
4315 		catch (RecognitionException re) {
4316 			_localctx.exception = re;
4317 			_errHandler.reportError(this, re);
4318 			_errHandler.recover(this, re);
4319 		}
4320 		finally {
4321 			exitRule();
4322 		}
4323 		return _localctx;
4324 	}
4325 
4326 	public static class ServiceNameContext extends ParserRuleContext {
4327 		public NameContext name() {
4328 			return getRuleContext(NameContext.class,0);
4329 		}
4330 		public ServiceNameContext(ParserRuleContext parent, int invokingState) {
4331 			super(parent, invokingState);
4332 		}
4333 		@Override public int getRuleIndex() { return RULE_serviceName; }
4334 		@Override
4335 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4336 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceName(this);
4337 			else return visitor.visitChildren(this);
4338 		}
4339 	}
4340 
4341 	public final ServiceNameContext serviceName() throws RecognitionException {
4342 		ServiceNameContext _localctx = new ServiceNameContext(_ctx, getState());
4343 		enterRule(_localctx, 70, RULE_serviceName);
4344 		try {
4345 			enterOuterAlt(_localctx, 1);
4346 			{
4347 			setState(1262);
4348 			name();
4349 			}
4350 		}
4351 		catch (RecognitionException re) {
4352 			_localctx.exception = re;
4353 			_errHandler.reportError(this, re);
4354 			_errHandler.recover(this, re);
4355 		}
4356 		finally {
4357 			exitRule();
4358 		}
4359 		return _localctx;
4360 	}
4361 
4362 	public static class ColumnNameContext extends ParserRuleContext {
4363 		public NameContext name() {
4364 			return getRuleContext(NameContext.class,0);
4365 		}
4366 		public ScriptVariableNameContext scriptVariableName() {
4367 			return getRuleContext(ScriptVariableNameContext.class,0);
4368 		}
4369 		public OwnerContext owner() {
4370 			return getRuleContext(OwnerContext.class,0);
4371 		}
4372 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4373 		public TerminalNode DOT_(int i) {
4374 			return getToken(SQLServerStatementParser.DOT_, i);
4375 		}
4376 		public DatabaseNameContext databaseName() {
4377 			return getRuleContext(DatabaseNameContext.class,0);
4378 		}
4379 		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
4380 			super(parent, invokingState);
4381 		}
4382 		@Override public int getRuleIndex() { return RULE_columnName; }
4383 		@Override
4384 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4385 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnName(this);
4386 			else return visitor.visitChildren(this);
4387 		}
4388 	}
4389 
4390 	public final ColumnNameContext columnName() throws RecognitionException {
4391 		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
4392 		enterRule(_localctx, 72, RULE_columnName);
4393 		try {
4394 			enterOuterAlt(_localctx, 1);
4395 			{
4396 			setState(1272);
4397 			_errHandler.sync(this);
4398 			switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
4399 			case 1:
4400 				{
4401 				setState(1267);
4402 				_errHandler.sync(this);
4403 				switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
4404 				case 1:
4405 					{
4406 					setState(1264);
4407 					databaseName();
4408 					setState(1265);
4409 					match(DOT_);
4410 					}
4411 					break;
4412 				}
4413 				{
4414 				setState(1269);
4415 				owner();
4416 				setState(1270);
4417 				match(DOT_);
4418 				}
4419 				}
4420 				break;
4421 			}
4422 			setState(1276);
4423 			_errHandler.sync(this);
4424 			switch (_input.LA(1)) {
4425 			case TRUNCATE:
4426 			case SCHEMA:
4427 			case COLUMNS:
4428 			case PRECISION:
4429 			case FUNCTION:
4430 			case TRIGGER:
4431 			case CAST:
4432 			case TRIM:
4433 			case SUBSTRING:
4434 			case OFF:
4435 			case GROUP:
4436 			case LIMIT:
4437 			case OFFSET:
4438 			case SAVEPOINT:
4439 			case BOOLEAN:
4440 			case ARRAY:
4441 			case DATE:
4442 			case TIMESTAMP:
4443 			case LOCALTIME:
4444 			case LOCALTIMESTAMP:
4445 			case YEAR:
4446 			case QUARTER:
4447 			case MONTH:
4448 			case WEEK:
4449 			case DAY:
4450 			case SECOND:
4451 			case MICROSECOND:
4452 			case MAX:
4453 			case MIN:
4454 			case SUM:
4455 			case COUNT:
4456 			case AVG:
4457 			case ENABLE:
4458 			case DISABLE:
4459 			case INSTANCE:
4460 			case DO:
4461 			case DEFINER:
4462 			case SQL:
4463 			case CASCADED:
4464 			case LOCAL:
4465 			case NEXT:
4466 			case NAME:
4467 			case INTEGER:
4468 			case TYPE:
4469 			case TEXT:
4470 			case VIEWS:
4471 			case READ_ONLY:
4472 			case DATABASE:
4473 			case RETURNS:
4474 			case DATEPART:
4475 			case PASSWORD:
4476 			case BINARY:
4477 			case HIDDEN_:
4478 			case MOD:
4479 			case PARTITION:
4480 			case PARTITIONS:
4481 			case TOP:
4482 			case ROW:
4483 			case ROWS:
4484 			case XOR:
4485 			case ALWAYS:
4486 			case ROLE:
4487 			case START:
4488 			case ALGORITHM:
4489 			case AUTO:
4490 			case BLOCKERS:
4491 			case CLUSTERED:
4492 			case NONCLUSTERED:
4493 			case COLUMNSTORE:
4494 			case CONTENT:
4495 			case YEARS:
4496 			case MONTHS:
4497 			case WEEKS:
4498 			case DAYS:
4499 			case MINUTES:
4500 			case DENY:
4501 			case DETERMINISTIC:
4502 			case DISTRIBUTION:
4503 			case DOCUMENT:
4504 			case DURABILITY:
4505 			case ENCRYPTED:
4506 			case FILESTREAM:
4507 			case FILETABLE:
4508 			case FILLFACTOR:
4509 			case FOLLOWING:
4510 			case HASH:
4511 			case HEAP:
4512 			case INBOUND:
4513 			case OUTBOUND:
4514 			case UNBOUNDED:
4515 			case INFINITE:
4516 			case LOGIN:
4517 			case MASKED:
4518 			case MAXDOP:
4519 			case MOVE:
4520 			case NOCHECK:
4521 			case OBJECT:
4522 			case ONLINE:
4523 			case OVER:
4524 			case PAGE:
4525 			case PAUSED:
4526 			case PERIOD:
4527 			case PERSISTED:
4528 			case PRECEDING:
4529 			case RANDOMIZED:
4530 			case RANGE:
4531 			case REBUILD:
4532 			case REPLICATE:
4533 			case REPLICATION:
4534 			case RESUMABLE:
4535 			case ROWGUIDCOL:
4536 			case SAVE:
4537 			case SELF:
4538 			case SPARSE:
4539 			case SWITCH:
4540 			case TRAN:
4541 			case TRANCOUNT:
4542 			case CONTROL:
4543 			case CONCAT:
4544 			case TAKE:
4545 			case OWNERSHIP:
4546 			case DEFINITION:
4547 			case APPLICATION:
4548 			case ASSEMBLY:
4549 			case SYMMETRIC:
4550 			case ASYMMETRIC:
4551 			case SERVER:
4552 			case RECEIVE:
4553 			case CHANGE:
4554 			case TRACE:
4555 			case TRACKING:
4556 			case RESOURCES:
4557 			case SETTINGS:
4558 			case STATE:
4559 			case AVAILABILITY:
4560 			case CREDENTIAL:
4561 			case ENDPOINT:
4562 			case EVENT:
4563 			case NOTIFICATION:
4564 			case LINKED:
4565 			case AUDIT:
4566 			case DDL:
4567 			case XML:
4568 			case IMPERSONATE:
4569 			case SECURABLES:
4570 			case AUTHENTICATE:
4571 			case EXTERNAL:
4572 			case ACCESS:
4573 			case ADMINISTER:
4574 			case BULK:
4575 			case OPERATIONS:
4576 			case UNSAFE:
4577 			case SHUTDOWN:
4578 			case SCOPED:
4579 			case CONFIGURATION:
4580 			case DATASPACE:
4581 			case SERVICE:
4582 			case CERTIFICATE:
4583 			case CONTRACT:
4584 			case ENCRYPTION:
4585 			case MASTER:
4586 			case DATA:
4587 			case SOURCE:
4588 			case FILE:
4589 			case FORMAT:
4590 			case LIBRARY:
4591 			case FULLTEXT:
4592 			case MASK:
4593 			case UNMASK:
4594 			case MESSAGE:
4595 			case REMOTE:
4596 			case BINDING:
4597 			case ROUTE:
4598 			case SECURITY:
4599 			case POLICY:
4600 			case AGGREGATE:
4601 			case QUEUE:
4602 			case RULE:
4603 			case SYNONYM:
4604 			case COLLECTION:
4605 			case SCRIPT:
4606 			case KILL:
4607 			case BACKUP:
4608 			case LOG:
4609 			case SHOWPLAN:
4610 			case SUBSCRIBE:
4611 			case QUERY:
4612 			case NOTIFICATIONS:
4613 			case CHECKPOINT:
4614 			case SEQUENCE:
4615 			case ABORT_AFTER_WAIT:
4616 			case ALLOW_PAGE_LOCKS:
4617 			case ALLOW_ROW_LOCKS:
4618 			case ALL_SPARSE_COLUMNS:
4619 			case BUCKET_COUNT:
4620 			case COLUMNSTORE_ARCHIVE:
4621 			case COLUMN_ENCRYPTION_KEY:
4622 			case COLUMN_SET:
4623 			case COMPRESSION_DELAY:
4624 			case DATABASE_DEAULT:
4625 			case DATA_COMPRESSION:
4626 			case DATA_CONSISTENCY_CHECK:
4627 			case ENCRYPTION_TYPE:
4628 			case SYSTEM_TIME:
4629 			case SYSTEM_VERSIONING:
4630 			case TEXTIMAGE_ON:
4631 			case WAIT_AT_LOW_PRIORITY:
4632 			case STATISTICS_INCREMENTAL:
4633 			case STATISTICS_NORECOMPUTE:
4634 			case ROUND_ROBIN:
4635 			case SCHEMA_AND_DATA:
4636 			case SCHEMA_ONLY:
4637 			case SORT_IN_TEMPDB:
4638 			case IGNORE_DUP_KEY:
4639 			case IMPLICIT_TRANSACTIONS:
4640 			case MAX_DURATION:
4641 			case MEMORY_OPTIMIZED:
4642 			case MIGRATION_STATE:
4643 			case PAD_INDEX:
4644 			case REMOTE_DATA_ARCHIVE:
4645 			case FILESTREAM_ON:
4646 			case FILETABLE_COLLATE_FILENAME:
4647 			case FILETABLE_DIRECTORY:
4648 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
4649 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
4650 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
4651 			case FILTER_PREDICATE:
4652 			case HISTORY_RETENTION_PERIOD:
4653 			case HISTORY_TABLE:
4654 			case LOCK_ESCALATION:
4655 			case DROP_EXISTING:
4656 			case ROW_NUMBER:
4657 			case FIRST:
4658 			case DATETIME2:
4659 			case OUTPUT:
4660 			case INSERTED:
4661 			case DELETED:
4662 			case FILENAME:
4663 			case SIZE:
4664 			case MAXSIZE:
4665 			case FILEGROWTH:
4666 			case UNLIMITED:
4667 			case KB:
4668 			case MB:
4669 			case GB:
4670 			case TB:
4671 			case CONTAINS:
4672 			case MEMORY_OPTIMIZED_DATA:
4673 			case FILEGROUP:
4674 			case NON_TRANSACTED_ACCESS:
4675 			case DB_CHAINING:
4676 			case TRUSTWORTHY:
4677 			case FORWARD_ONLY:
4678 			case KEYSET:
4679 			case FAST_FORWARD:
4680 			case SCROLL_LOCKS:
4681 			case OPTIMISTIC:
4682 			case TYPE_WARNING:
4683 			case SCHEMABINDING:
4684 			case CALLER:
4685 			case INPUT:
4686 			case OWNER:
4687 			case SNAPSHOT:
4688 			case REPEATABLE:
4689 			case SERIALIZABLE:
4690 			case NATIVE_COMPILATION:
4691 			case VIEW_METADATA:
4692 			case INSTEAD:
4693 			case APPEND:
4694 			case INCREMENT:
4695 			case CACHE:
4696 			case MINVALUE:
4697 			case MAXVALUE:
4698 			case RESTART:
4699 			case LOB_COMPACTION:
4700 			case COMPRESS_ALL_ROW_GROUPS:
4701 			case REORGANIZE:
4702 			case RESUME:
4703 			case PAUSE:
4704 			case ABORT:
4705 			case ACCELERATED_DATABASE_RECOVERY:
4706 			case PERSISTENT_VERSION_STORE_FILEGROUP:
4707 			case IMMEDIATE:
4708 			case NO_WAIT:
4709 			case TARGET_RECOVERY_TIME:
4710 			case SECONDS:
4711 			case HONOR_BROKER_PRIORITY:
4712 			case ERROR_BROKER_CONVERSATIONS:
4713 			case NEW_BROKER:
4714 			case DISABLE_BROKER:
4715 			case ENABLE_BROKER:
4716 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
4717 			case READ_COMMITTED_SNAPSHOT:
4718 			case ALLOW_SNAPSHOT_ISOLATION:
4719 			case RECURSIVE_TRIGGERS:
4720 			case QUOTED_IDENTIFIER:
4721 			case NUMERIC_ROUNDABORT:
4722 			case CONCAT_NULL_YIELDS_NULL:
4723 			case COMPATIBILITY_LEVEL:
4724 			case ARITHABORT:
4725 			case ANSI_WARNINGS:
4726 			case ANSI_PADDING:
4727 			case ANSI_NULLS:
4728 			case ANSI_NULL_DEFAULT:
4729 			case PAGE_VERIFY:
4730 			case CHECKSUM:
4731 			case TORN_PAGE_DETECTION:
4732 			case BULK_LOGGED:
4733 			case RECOVERY:
4734 			case TOTAL_EXECUTION_CPU_TIME_MS:
4735 			case TOTAL_COMPILE_CPU_TIME_MS:
4736 			case STALE_CAPTURE_POLICY_THRESHOLD:
4737 			case EXECUTION_COUNT:
4738 			case QUERY_CAPTURE_POLICY:
4739 			case WAIT_STATS_CAPTURE_MODE:
4740 			case MAX_PLANS_PER_QUERY:
4741 			case QUERY_CAPTURE_MODE:
4742 			case SIZE_BASED_CLEANUP_MODE:
4743 			case INTERVAL_LENGTH_MINUTES:
4744 			case MAX_STORAGE_SIZE_MB:
4745 			case DATA_FLUSH_INTERVAL_SECONDS:
4746 			case CLEANUP_POLICY:
4747 			case CUSTOM:
4748 			case STALE_QUERY_THRESHOLD_DAYS:
4749 			case OPERATION_MODE:
4750 			case QUERY_STORE:
4751 			case CURSOR_DEFAULT:
4752 			case GLOBAL:
4753 			case CURSOR_CLOSE_ON_COMMIT:
4754 			case HOURS:
4755 			case CHANGE_RETENTION:
4756 			case AUTO_CLEANUP:
4757 			case CHANGE_TRACKING:
4758 			case AUTOMATIC_TUNING:
4759 			case FORCE_LAST_GOOD_PLAN:
4760 			case AUTO_UPDATE_STATISTICS_ASYNC:
4761 			case AUTO_UPDATE_STATISTICS:
4762 			case AUTO_SHRINK:
4763 			case AUTO_CREATE_STATISTICS:
4764 			case INCREMENTAL:
4765 			case AUTO_CLOSE:
4766 			case DATA_RETENTION:
4767 			case TEMPORAL_HISTORY_RETENTION:
4768 			case EDITION:
4769 			case MIXED_PAGE_ALLOCATION:
4770 			case DISABLED:
4771 			case ALLOWED:
4772 			case HADR:
4773 			case MULTI_USER:
4774 			case RESTRICTED_USER:
4775 			case SINGLE_USER:
4776 			case OFFLINE:
4777 			case EMERGENCY:
4778 			case SUSPEND:
4779 			case DATE_CORRELATION_OPTIMIZATION:
4780 			case ELASTIC_POOL:
4781 			case SERVICE_OBJECTIVE:
4782 			case DATABASE_NAME:
4783 			case ALLOW_CONNECTIONS:
4784 			case GEO:
4785 			case NAMED:
4786 			case DATEFIRST:
4787 			case BACKUP_STORAGE_REDUNDANCY:
4788 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
4789 			case SECONDARY:
4790 			case FAILOVER:
4791 			case DEFAULT_FULLTEXT_LANGUAGE:
4792 			case DEFAULT_LANGUAGE:
4793 			case INLINE:
4794 			case NESTED_TRIGGERS:
4795 			case TRANSFORM_NOISE_WORDS:
4796 			case TWO_DIGIT_YEAR_CUTOFF:
4797 			case PERSISTENT_LOG_BUFFER:
4798 			case DIRECTORY_NAME:
4799 			case DATEFORMAT:
4800 			case DELAYED_DURABILITY:
4801 			case AUTHORIZATION:
4802 			case TRANSFER:
4803 			case PROVIDER:
4804 			case SEARCH:
4805 			case MEMBER:
4806 			case IDENTIFIER_:
4807 			case DELIMITED_IDENTIFIER_:
4808 				{
4809 				setState(1274);
4810 				name();
4811 				}
4812 				break;
4813 			case DOLLAR_:
4814 				{
4815 				setState(1275);
4816 				scriptVariableName();
4817 				}
4818 				break;
4819 			default:
4820 				throw new NoViableAltException(this);
4821 			}
4822 			}
4823 		}
4824 		catch (RecognitionException re) {
4825 			_localctx.exception = re;
4826 			_errHandler.reportError(this, re);
4827 			_errHandler.recover(this, re);
4828 		}
4829 		finally {
4830 			exitRule();
4831 		}
4832 		return _localctx;
4833 	}
4834 
4835 	public static class ScriptVariableNameContext extends ParserRuleContext {
4836 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
4837 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4838 		public NameContext name() {
4839 			return getRuleContext(NameContext.class,0);
4840 		}
4841 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4842 		public ScriptVariableNameContext(ParserRuleContext parent, int invokingState) {
4843 			super(parent, invokingState);
4844 		}
4845 		@Override public int getRuleIndex() { return RULE_scriptVariableName; }
4846 		@Override
4847 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4848 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitScriptVariableName(this);
4849 			else return visitor.visitChildren(this);
4850 		}
4851 	}
4852 
4853 	public final ScriptVariableNameContext scriptVariableName() throws RecognitionException {
4854 		ScriptVariableNameContext _localctx = new ScriptVariableNameContext(_ctx, getState());
4855 		enterRule(_localctx, 74, RULE_scriptVariableName);
4856 		try {
4857 			enterOuterAlt(_localctx, 1);
4858 			{
4859 			setState(1278);
4860 			match(DOLLAR_);
4861 			setState(1279);
4862 			match(LP_);
4863 			setState(1280);
4864 			name();
4865 			setState(1281);
4866 			match(RP_);
4867 			}
4868 		}
4869 		catch (RecognitionException re) {
4870 			_localctx.exception = re;
4871 			_errHandler.reportError(this, re);
4872 			_errHandler.recover(this, re);
4873 		}
4874 		finally {
4875 			exitRule();
4876 		}
4877 		return _localctx;
4878 	}
4879 
4880 	public static class OwnerContext extends ParserRuleContext {
4881 		public IdentifierContext identifier() {
4882 			return getRuleContext(IdentifierContext.class,0);
4883 		}
4884 		public OwnerContext(ParserRuleContext parent, int invokingState) {
4885 			super(parent, invokingState);
4886 		}
4887 		@Override public int getRuleIndex() { return RULE_owner; }
4888 		@Override
4889 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4890 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOwner(this);
4891 			else return visitor.visitChildren(this);
4892 		}
4893 	}
4894 
4895 	public final OwnerContext owner() throws RecognitionException {
4896 		OwnerContext _localctx = new OwnerContext(_ctx, getState());
4897 		enterRule(_localctx, 76, RULE_owner);
4898 		try {
4899 			enterOuterAlt(_localctx, 1);
4900 			{
4901 			setState(1283);
4902 			identifier();
4903 			}
4904 		}
4905 		catch (RecognitionException re) {
4906 			_localctx.exception = re;
4907 			_errHandler.reportError(this, re);
4908 			_errHandler.recover(this, re);
4909 		}
4910 		finally {
4911 			exitRule();
4912 		}
4913 		return _localctx;
4914 	}
4915 
4916 	public static class NameContext extends ParserRuleContext {
4917 		public IdentifierContext identifier() {
4918 			return getRuleContext(IdentifierContext.class,0);
4919 		}
4920 		public NameContext(ParserRuleContext parent, int invokingState) {
4921 			super(parent, invokingState);
4922 		}
4923 		@Override public int getRuleIndex() { return RULE_name; }
4924 		@Override
4925 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4926 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitName(this);
4927 			else return visitor.visitChildren(this);
4928 		}
4929 	}
4930 
4931 	public final NameContext name() throws RecognitionException {
4932 		NameContext _localctx = new NameContext(_ctx, getState());
4933 		enterRule(_localctx, 78, RULE_name);
4934 		try {
4935 			enterOuterAlt(_localctx, 1);
4936 			{
4937 			setState(1285);
4938 			identifier();
4939 			}
4940 		}
4941 		catch (RecognitionException re) {
4942 			_localctx.exception = re;
4943 			_errHandler.reportError(this, re);
4944 			_errHandler.recover(this, re);
4945 		}
4946 		finally {
4947 			exitRule();
4948 		}
4949 		return _localctx;
4950 	}
4951 
4952 	public static class ColumnNamesContext extends ParserRuleContext {
4953 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4954 		public List<ColumnNameContext> columnName() {
4955 			return getRuleContexts(ColumnNameContext.class);
4956 		}
4957 		public ColumnNameContext columnName(int i) {
4958 			return getRuleContext(ColumnNameContext.class,i);
4959 		}
4960 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4961 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4962 		public TerminalNode COMMA_(int i) {
4963 			return getToken(SQLServerStatementParser.COMMA_, i);
4964 		}
4965 		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
4966 			super(parent, invokingState);
4967 		}
4968 		@Override public int getRuleIndex() { return RULE_columnNames; }
4969 		@Override
4970 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4971 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNames(this);
4972 			else return visitor.visitChildren(this);
4973 		}
4974 	}
4975 
4976 	public final ColumnNamesContext columnNames() throws RecognitionException {
4977 		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
4978 		enterRule(_localctx, 80, RULE_columnNames);
4979 		int _la;
4980 		try {
4981 			enterOuterAlt(_localctx, 1);
4982 			{
4983 			setState(1287);
4984 			match(LP_);
4985 			setState(1288);
4986 			columnName();
4987 			setState(1293);
4988 			_errHandler.sync(this);
4989 			_la = _input.LA(1);
4990 			while (_la==COMMA_) {
4991 				{
4992 				{
4993 				setState(1289);
4994 				match(COMMA_);
4995 				setState(1290);
4996 				columnName();
4997 				}
4998 				}
4999 				setState(1295);
5000 				_errHandler.sync(this);
5001 				_la = _input.LA(1);
5002 			}
5003 			setState(1296);
5004 			match(RP_);
5005 			}
5006 		}
5007 		catch (RecognitionException re) {
5008 			_localctx.exception = re;
5009 			_errHandler.reportError(this, re);
5010 			_errHandler.recover(this, re);
5011 		}
5012 		finally {
5013 			exitRule();
5014 		}
5015 		return _localctx;
5016 	}
5017 
5018 	public static class ColumnNamesWithSortContext extends ParserRuleContext {
5019 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5020 		public List<ColumnNameWithSortContext> columnNameWithSort() {
5021 			return getRuleContexts(ColumnNameWithSortContext.class);
5022 		}
5023 		public ColumnNameWithSortContext columnNameWithSort(int i) {
5024 			return getRuleContext(ColumnNameWithSortContext.class,i);
5025 		}
5026 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5027 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
5028 		public TerminalNode COMMA_(int i) {
5029 			return getToken(SQLServerStatementParser.COMMA_, i);
5030 		}
5031 		public ColumnNamesWithSortContext(ParserRuleContext parent, int invokingState) {
5032 			super(parent, invokingState);
5033 		}
5034 		@Override public int getRuleIndex() { return RULE_columnNamesWithSort; }
5035 		@Override
5036 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5037 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNamesWithSort(this);
5038 			else return visitor.visitChildren(this);
5039 		}
5040 	}
5041 
5042 	public final ColumnNamesWithSortContext columnNamesWithSort() throws RecognitionException {
5043 		ColumnNamesWithSortContext _localctx = new ColumnNamesWithSortContext(_ctx, getState());
5044 		enterRule(_localctx, 82, RULE_columnNamesWithSort);
5045 		int _la;
5046 		try {
5047 			enterOuterAlt(_localctx, 1);
5048 			{
5049 			setState(1298);
5050 			match(LP_);
5051 			setState(1299);
5052 			columnNameWithSort();
5053 			setState(1304);
5054 			_errHandler.sync(this);
5055 			_la = _input.LA(1);
5056 			while (_la==COMMA_) {
5057 				{
5058 				{
5059 				setState(1300);
5060 				match(COMMA_);
5061 				setState(1301);
5062 				columnNameWithSort();
5063 				}
5064 				}
5065 				setState(1306);
5066 				_errHandler.sync(this);
5067 				_la = _input.LA(1);
5068 			}
5069 			setState(1307);
5070 			match(RP_);
5071 			}
5072 		}
5073 		catch (RecognitionException re) {
5074 			_localctx.exception = re;
5075 			_errHandler.reportError(this, re);
5076 			_errHandler.recover(this, re);
5077 		}
5078 		finally {
5079 			exitRule();
5080 		}
5081 		return _localctx;
5082 	}
5083 
5084 	public static class TableNamesContext extends ParserRuleContext {
5085 		public List<TableNameContext> tableName() {
5086 			return getRuleContexts(TableNameContext.class);
5087 		}
5088 		public TableNameContext tableName(int i) {
5089 			return getRuleContext(TableNameContext.class,i);
5090 		}
5091 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5092 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
5093 		public TerminalNode COMMA_(int i) {
5094 			return getToken(SQLServerStatementParser.COMMA_, i);
5095 		}
5096 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5097 		public TableNamesContext(ParserRuleContext parent, int invokingState) {
5098 			super(parent, invokingState);
5099 		}
5100 		@Override public int getRuleIndex() { return RULE_tableNames; }
5101 		@Override
5102 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5103 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableNames(this);
5104 			else return visitor.visitChildren(this);
5105 		}
5106 	}
5107 
5108 	public final TableNamesContext tableNames() throws RecognitionException {
5109 		TableNamesContext _localctx = new TableNamesContext(_ctx, getState());
5110 		enterRule(_localctx, 84, RULE_tableNames);
5111 		int _la;
5112 		try {
5113 			enterOuterAlt(_localctx, 1);
5114 			{
5115 			setState(1310);
5116 			_errHandler.sync(this);
5117 			_la = _input.LA(1);
5118 			if (_la==LP_) {
5119 				{
5120 				setState(1309);
5121 				match(LP_);
5122 				}
5123 			}
5124 
5125 			setState(1312);
5126 			tableName();
5127 			setState(1317);
5128 			_errHandler.sync(this);
5129 			_la = _input.LA(1);
5130 			while (_la==COMMA_) {
5131 				{
5132 				{
5133 				setState(1313);
5134 				match(COMMA_);
5135 				setState(1314);
5136 				tableName();
5137 				}
5138 				}
5139 				setState(1319);
5140 				_errHandler.sync(this);
5141 				_la = _input.LA(1);
5142 			}
5143 			setState(1321);
5144 			_errHandler.sync(this);
5145 			_la = _input.LA(1);
5146 			if (_la==RP_) {
5147 				{
5148 				setState(1320);
5149 				match(RP_);
5150 				}
5151 			}
5152 
5153 			}
5154 		}
5155 		catch (RecognitionException re) {
5156 			_localctx.exception = re;
5157 			_errHandler.reportError(this, re);
5158 			_errHandler.recover(this, re);
5159 		}
5160 		finally {
5161 			exitRule();
5162 		}
5163 		return _localctx;
5164 	}
5165 
5166 	public static class IndexNameContext extends ParserRuleContext {
5167 		public IdentifierContext identifier() {
5168 			return getRuleContext(IdentifierContext.class,0);
5169 		}
5170 		public IndexNameContext(ParserRuleContext parent, int invokingState) {
5171 			super(parent, invokingState);
5172 		}
5173 		@Override public int getRuleIndex() { return RULE_indexName; }
5174 		@Override
5175 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5176 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexName(this);
5177 			else return visitor.visitChildren(this);
5178 		}
5179 	}
5180 
5181 	public final IndexNameContext indexName() throws RecognitionException {
5182 		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
5183 		enterRule(_localctx, 86, RULE_indexName);
5184 		try {
5185 			enterOuterAlt(_localctx, 1);
5186 			{
5187 			setState(1323);
5188 			identifier();
5189 			}
5190 		}
5191 		catch (RecognitionException re) {
5192 			_localctx.exception = re;
5193 			_errHandler.reportError(this, re);
5194 			_errHandler.recover(this, re);
5195 		}
5196 		finally {
5197 			exitRule();
5198 		}
5199 		return _localctx;
5200 	}
5201 
5202 	public static class ConstraintNameContext extends ParserRuleContext {
5203 		public IdentifierContext identifier() {
5204 			return getRuleContext(IdentifierContext.class,0);
5205 		}
5206 		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
5207 			super(parent, invokingState);
5208 		}
5209 		@Override public int getRuleIndex() { return RULE_constraintName; }
5210 		@Override
5211 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5212 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintName(this);
5213 			else return visitor.visitChildren(this);
5214 		}
5215 	}
5216 
5217 	public final ConstraintNameContext constraintName() throws RecognitionException {
5218 		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
5219 		enterRule(_localctx, 88, RULE_constraintName);
5220 		try {
5221 			enterOuterAlt(_localctx, 1);
5222 			{
5223 			setState(1325);
5224 			identifier();
5225 			}
5226 		}
5227 		catch (RecognitionException re) {
5228 			_localctx.exception = re;
5229 			_errHandler.reportError(this, re);
5230 			_errHandler.recover(this, re);
5231 		}
5232 		finally {
5233 			exitRule();
5234 		}
5235 		return _localctx;
5236 	}
5237 
5238 	public static class CollationNameContext extends ParserRuleContext {
5239 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5240 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
5241 		public CollationNameContext(ParserRuleContext parent, int invokingState) {
5242 			super(parent, invokingState);
5243 		}
5244 		@Override public int getRuleIndex() { return RULE_collationName; }
5245 		@Override
5246 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5247 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCollationName(this);
5248 			else return visitor.visitChildren(this);
5249 		}
5250 	}
5251 
5252 	public final CollationNameContext collationName() throws RecognitionException {
5253 		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
5254 		enterRule(_localctx, 90, RULE_collationName);
5255 		int _la;
5256 		try {
5257 			enterOuterAlt(_localctx, 1);
5258 			{
5259 			setState(1327);
5260 			_la = _input.LA(1);
5261 			if ( !(_la==IDENTIFIER_ || _la==STRING_) ) {
5262 			_errHandler.recoverInline(this);
5263 			}
5264 			else {
5265 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5266 				_errHandler.reportMatch(this);
5267 				consume();
5268 			}
5269 			}
5270 		}
5271 		catch (RecognitionException re) {
5272 			_localctx.exception = re;
5273 			_errHandler.reportError(this, re);
5274 			_errHandler.recover(this, re);
5275 		}
5276 		finally {
5277 			exitRule();
5278 		}
5279 		return _localctx;
5280 	}
5281 
5282 	public static class AliasContext extends ParserRuleContext {
5283 		public IdentifierContext identifier() {
5284 			return getRuleContext(IdentifierContext.class,0);
5285 		}
5286 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5287 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
5288 		public AliasContext(ParserRuleContext parent, int invokingState) {
5289 			super(parent, invokingState);
5290 		}
5291 		@Override public int getRuleIndex() { return RULE_alias; }
5292 		@Override
5293 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5294 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlias(this);
5295 			else return visitor.visitChildren(this);
5296 		}
5297 	}
5298 
5299 	public final AliasContext alias() throws RecognitionException {
5300 		AliasContext _localctx = new AliasContext(_ctx, getState());
5301 		enterRule(_localctx, 92, RULE_alias);
5302 		try {
5303 			setState(1332);
5304 			_errHandler.sync(this);
5305 			switch (_input.LA(1)) {
5306 			case TRUNCATE:
5307 			case SCHEMA:
5308 			case COLUMNS:
5309 			case PRECISION:
5310 			case FUNCTION:
5311 			case TRIGGER:
5312 			case CAST:
5313 			case TRIM:
5314 			case SUBSTRING:
5315 			case OFF:
5316 			case GROUP:
5317 			case LIMIT:
5318 			case OFFSET:
5319 			case SAVEPOINT:
5320 			case BOOLEAN:
5321 			case ARRAY:
5322 			case DATE:
5323 			case TIMESTAMP:
5324 			case LOCALTIME:
5325 			case LOCALTIMESTAMP:
5326 			case YEAR:
5327 			case QUARTER:
5328 			case MONTH:
5329 			case WEEK:
5330 			case DAY:
5331 			case SECOND:
5332 			case MICROSECOND:
5333 			case MAX:
5334 			case MIN:
5335 			case SUM:
5336 			case COUNT:
5337 			case AVG:
5338 			case ENABLE:
5339 			case DISABLE:
5340 			case INSTANCE:
5341 			case DO:
5342 			case DEFINER:
5343 			case SQL:
5344 			case CASCADED:
5345 			case LOCAL:
5346 			case NEXT:
5347 			case NAME:
5348 			case INTEGER:
5349 			case TYPE:
5350 			case TEXT:
5351 			case VIEWS:
5352 			case READ_ONLY:
5353 			case DATABASE:
5354 			case RETURNS:
5355 			case DATEPART:
5356 			case PASSWORD:
5357 			case BINARY:
5358 			case HIDDEN_:
5359 			case MOD:
5360 			case PARTITION:
5361 			case PARTITIONS:
5362 			case TOP:
5363 			case ROW:
5364 			case ROWS:
5365 			case XOR:
5366 			case ALWAYS:
5367 			case ROLE:
5368 			case START:
5369 			case ALGORITHM:
5370 			case AUTO:
5371 			case BLOCKERS:
5372 			case CLUSTERED:
5373 			case NONCLUSTERED:
5374 			case COLUMNSTORE:
5375 			case CONTENT:
5376 			case YEARS:
5377 			case MONTHS:
5378 			case WEEKS:
5379 			case DAYS:
5380 			case MINUTES:
5381 			case DENY:
5382 			case DETERMINISTIC:
5383 			case DISTRIBUTION:
5384 			case DOCUMENT:
5385 			case DURABILITY:
5386 			case ENCRYPTED:
5387 			case FILESTREAM:
5388 			case FILETABLE:
5389 			case FILLFACTOR:
5390 			case FOLLOWING:
5391 			case HASH:
5392 			case HEAP:
5393 			case INBOUND:
5394 			case OUTBOUND:
5395 			case UNBOUNDED:
5396 			case INFINITE:
5397 			case LOGIN:
5398 			case MASKED:
5399 			case MAXDOP:
5400 			case MOVE:
5401 			case NOCHECK:
5402 			case OBJECT:
5403 			case ONLINE:
5404 			case OVER:
5405 			case PAGE:
5406 			case PAUSED:
5407 			case PERIOD:
5408 			case PERSISTED:
5409 			case PRECEDING:
5410 			case RANDOMIZED:
5411 			case RANGE:
5412 			case REBUILD:
5413 			case REPLICATE:
5414 			case REPLICATION:
5415 			case RESUMABLE:
5416 			case ROWGUIDCOL:
5417 			case SAVE:
5418 			case SELF:
5419 			case SPARSE:
5420 			case SWITCH:
5421 			case TRAN:
5422 			case TRANCOUNT:
5423 			case CONTROL:
5424 			case CONCAT:
5425 			case TAKE:
5426 			case OWNERSHIP:
5427 			case DEFINITION:
5428 			case APPLICATION:
5429 			case ASSEMBLY:
5430 			case SYMMETRIC:
5431 			case ASYMMETRIC:
5432 			case SERVER:
5433 			case RECEIVE:
5434 			case CHANGE:
5435 			case TRACE:
5436 			case TRACKING:
5437 			case RESOURCES:
5438 			case SETTINGS:
5439 			case STATE:
5440 			case AVAILABILITY:
5441 			case CREDENTIAL:
5442 			case ENDPOINT:
5443 			case EVENT:
5444 			case NOTIFICATION:
5445 			case LINKED:
5446 			case AUDIT:
5447 			case DDL:
5448 			case XML:
5449 			case IMPERSONATE:
5450 			case SECURABLES:
5451 			case AUTHENTICATE:
5452 			case EXTERNAL:
5453 			case ACCESS:
5454 			case ADMINISTER:
5455 			case BULK:
5456 			case OPERATIONS:
5457 			case UNSAFE:
5458 			case SHUTDOWN:
5459 			case SCOPED:
5460 			case CONFIGURATION:
5461 			case DATASPACE:
5462 			case SERVICE:
5463 			case CERTIFICATE:
5464 			case CONTRACT:
5465 			case ENCRYPTION:
5466 			case MASTER:
5467 			case DATA:
5468 			case SOURCE:
5469 			case FILE:
5470 			case FORMAT:
5471 			case LIBRARY:
5472 			case FULLTEXT:
5473 			case MASK:
5474 			case UNMASK:
5475 			case MESSAGE:
5476 			case REMOTE:
5477 			case BINDING:
5478 			case ROUTE:
5479 			case SECURITY:
5480 			case POLICY:
5481 			case AGGREGATE:
5482 			case QUEUE:
5483 			case RULE:
5484 			case SYNONYM:
5485 			case COLLECTION:
5486 			case SCRIPT:
5487 			case KILL:
5488 			case BACKUP:
5489 			case LOG:
5490 			case SHOWPLAN:
5491 			case SUBSCRIBE:
5492 			case QUERY:
5493 			case NOTIFICATIONS:
5494 			case CHECKPOINT:
5495 			case SEQUENCE:
5496 			case ABORT_AFTER_WAIT:
5497 			case ALLOW_PAGE_LOCKS:
5498 			case ALLOW_ROW_LOCKS:
5499 			case ALL_SPARSE_COLUMNS:
5500 			case BUCKET_COUNT:
5501 			case COLUMNSTORE_ARCHIVE:
5502 			case COLUMN_ENCRYPTION_KEY:
5503 			case COLUMN_SET:
5504 			case COMPRESSION_DELAY:
5505 			case DATABASE_DEAULT:
5506 			case DATA_COMPRESSION:
5507 			case DATA_CONSISTENCY_CHECK:
5508 			case ENCRYPTION_TYPE:
5509 			case SYSTEM_TIME:
5510 			case SYSTEM_VERSIONING:
5511 			case TEXTIMAGE_ON:
5512 			case WAIT_AT_LOW_PRIORITY:
5513 			case STATISTICS_INCREMENTAL:
5514 			case STATISTICS_NORECOMPUTE:
5515 			case ROUND_ROBIN:
5516 			case SCHEMA_AND_DATA:
5517 			case SCHEMA_ONLY:
5518 			case SORT_IN_TEMPDB:
5519 			case IGNORE_DUP_KEY:
5520 			case IMPLICIT_TRANSACTIONS:
5521 			case MAX_DURATION:
5522 			case MEMORY_OPTIMIZED:
5523 			case MIGRATION_STATE:
5524 			case PAD_INDEX:
5525 			case REMOTE_DATA_ARCHIVE:
5526 			case FILESTREAM_ON:
5527 			case FILETABLE_COLLATE_FILENAME:
5528 			case FILETABLE_DIRECTORY:
5529 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
5530 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
5531 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
5532 			case FILTER_PREDICATE:
5533 			case HISTORY_RETENTION_PERIOD:
5534 			case HISTORY_TABLE:
5535 			case LOCK_ESCALATION:
5536 			case DROP_EXISTING:
5537 			case ROW_NUMBER:
5538 			case FIRST:
5539 			case DATETIME2:
5540 			case OUTPUT:
5541 			case INSERTED:
5542 			case DELETED:
5543 			case FILENAME:
5544 			case SIZE:
5545 			case MAXSIZE:
5546 			case FILEGROWTH:
5547 			case UNLIMITED:
5548 			case KB:
5549 			case MB:
5550 			case GB:
5551 			case TB:
5552 			case CONTAINS:
5553 			case MEMORY_OPTIMIZED_DATA:
5554 			case FILEGROUP:
5555 			case NON_TRANSACTED_ACCESS:
5556 			case DB_CHAINING:
5557 			case TRUSTWORTHY:
5558 			case FORWARD_ONLY:
5559 			case KEYSET:
5560 			case FAST_FORWARD:
5561 			case SCROLL_LOCKS:
5562 			case OPTIMISTIC:
5563 			case TYPE_WARNING:
5564 			case SCHEMABINDING:
5565 			case CALLER:
5566 			case INPUT:
5567 			case OWNER:
5568 			case SNAPSHOT:
5569 			case REPEATABLE:
5570 			case SERIALIZABLE:
5571 			case NATIVE_COMPILATION:
5572 			case VIEW_METADATA:
5573 			case INSTEAD:
5574 			case APPEND:
5575 			case INCREMENT:
5576 			case CACHE:
5577 			case MINVALUE:
5578 			case MAXVALUE:
5579 			case RESTART:
5580 			case LOB_COMPACTION:
5581 			case COMPRESS_ALL_ROW_GROUPS:
5582 			case REORGANIZE:
5583 			case RESUME:
5584 			case PAUSE:
5585 			case ABORT:
5586 			case ACCELERATED_DATABASE_RECOVERY:
5587 			case PERSISTENT_VERSION_STORE_FILEGROUP:
5588 			case IMMEDIATE:
5589 			case NO_WAIT:
5590 			case TARGET_RECOVERY_TIME:
5591 			case SECONDS:
5592 			case HONOR_BROKER_PRIORITY:
5593 			case ERROR_BROKER_CONVERSATIONS:
5594 			case NEW_BROKER:
5595 			case DISABLE_BROKER:
5596 			case ENABLE_BROKER:
5597 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
5598 			case READ_COMMITTED_SNAPSHOT:
5599 			case ALLOW_SNAPSHOT_ISOLATION:
5600 			case RECURSIVE_TRIGGERS:
5601 			case QUOTED_IDENTIFIER:
5602 			case NUMERIC_ROUNDABORT:
5603 			case CONCAT_NULL_YIELDS_NULL:
5604 			case COMPATIBILITY_LEVEL:
5605 			case ARITHABORT:
5606 			case ANSI_WARNINGS:
5607 			case ANSI_PADDING:
5608 			case ANSI_NULLS:
5609 			case ANSI_NULL_DEFAULT:
5610 			case PAGE_VERIFY:
5611 			case CHECKSUM:
5612 			case TORN_PAGE_DETECTION:
5613 			case BULK_LOGGED:
5614 			case RECOVERY:
5615 			case TOTAL_EXECUTION_CPU_TIME_MS:
5616 			case TOTAL_COMPILE_CPU_TIME_MS:
5617 			case STALE_CAPTURE_POLICY_THRESHOLD:
5618 			case EXECUTION_COUNT:
5619 			case QUERY_CAPTURE_POLICY:
5620 			case WAIT_STATS_CAPTURE_MODE:
5621 			case MAX_PLANS_PER_QUERY:
5622 			case QUERY_CAPTURE_MODE:
5623 			case SIZE_BASED_CLEANUP_MODE:
5624 			case INTERVAL_LENGTH_MINUTES:
5625 			case MAX_STORAGE_SIZE_MB:
5626 			case DATA_FLUSH_INTERVAL_SECONDS:
5627 			case CLEANUP_POLICY:
5628 			case CUSTOM:
5629 			case STALE_QUERY_THRESHOLD_DAYS:
5630 			case OPERATION_MODE:
5631 			case QUERY_STORE:
5632 			case CURSOR_DEFAULT:
5633 			case GLOBAL:
5634 			case CURSOR_CLOSE_ON_COMMIT:
5635 			case HOURS:
5636 			case CHANGE_RETENTION:
5637 			case AUTO_CLEANUP:
5638 			case CHANGE_TRACKING:
5639 			case AUTOMATIC_TUNING:
5640 			case FORCE_LAST_GOOD_PLAN:
5641 			case AUTO_UPDATE_STATISTICS_ASYNC:
5642 			case AUTO_UPDATE_STATISTICS:
5643 			case AUTO_SHRINK:
5644 			case AUTO_CREATE_STATISTICS:
5645 			case INCREMENTAL:
5646 			case AUTO_CLOSE:
5647 			case DATA_RETENTION:
5648 			case TEMPORAL_HISTORY_RETENTION:
5649 			case EDITION:
5650 			case MIXED_PAGE_ALLOCATION:
5651 			case DISABLED:
5652 			case ALLOWED:
5653 			case HADR:
5654 			case MULTI_USER:
5655 			case RESTRICTED_USER:
5656 			case SINGLE_USER:
5657 			case OFFLINE:
5658 			case EMERGENCY:
5659 			case SUSPEND:
5660 			case DATE_CORRELATION_OPTIMIZATION:
5661 			case ELASTIC_POOL:
5662 			case SERVICE_OBJECTIVE:
5663 			case DATABASE_NAME:
5664 			case ALLOW_CONNECTIONS:
5665 			case GEO:
5666 			case NAMED:
5667 			case DATEFIRST:
5668 			case BACKUP_STORAGE_REDUNDANCY:
5669 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
5670 			case SECONDARY:
5671 			case FAILOVER:
5672 			case DEFAULT_FULLTEXT_LANGUAGE:
5673 			case DEFAULT_LANGUAGE:
5674 			case INLINE:
5675 			case NESTED_TRIGGERS:
5676 			case TRANSFORM_NOISE_WORDS:
5677 			case TWO_DIGIT_YEAR_CUTOFF:
5678 			case PERSISTENT_LOG_BUFFER:
5679 			case DIRECTORY_NAME:
5680 			case DATEFORMAT:
5681 			case DELAYED_DURABILITY:
5682 			case AUTHORIZATION:
5683 			case TRANSFER:
5684 			case PROVIDER:
5685 			case SEARCH:
5686 			case MEMBER:
5687 			case IDENTIFIER_:
5688 			case DELIMITED_IDENTIFIER_:
5689 				enterOuterAlt(_localctx, 1);
5690 				{
5691 				setState(1329);
5692 				identifier();
5693 				}
5694 				break;
5695 			case STRING_:
5696 				enterOuterAlt(_localctx, 2);
5697 				{
5698 				setState(1330);
5699 				match(STRING_);
5700 				}
5701 				break;
5702 			case NCHAR_TEXT:
5703 				enterOuterAlt(_localctx, 3);
5704 				{
5705 				setState(1331);
5706 				match(NCHAR_TEXT);
5707 				}
5708 				break;
5709 			default:
5710 				throw new NoViableAltException(this);
5711 			}
5712 		}
5713 		catch (RecognitionException re) {
5714 			_localctx.exception = re;
5715 			_errHandler.reportError(this, re);
5716 			_errHandler.recover(this, re);
5717 		}
5718 		finally {
5719 			exitRule();
5720 		}
5721 		return _localctx;
5722 	}
5723 
5724 	public static class DataTypeLengthContext extends ParserRuleContext {
5725 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5726 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5727 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
5728 		public TerminalNode NUMBER_(int i) {
5729 			return getToken(SQLServerStatementParser.NUMBER_, i);
5730 		}
5731 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
5732 		public DataTypeLengthContext(ParserRuleContext parent, int invokingState) {
5733 			super(parent, invokingState);
5734 		}
5735 		@Override public int getRuleIndex() { return RULE_dataTypeLength; }
5736 		@Override
5737 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5738 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeLength(this);
5739 			else return visitor.visitChildren(this);
5740 		}
5741 	}
5742 
5743 	public final DataTypeLengthContext dataTypeLength() throws RecognitionException {
5744 		DataTypeLengthContext _localctx = new DataTypeLengthContext(_ctx, getState());
5745 		enterRule(_localctx, 94, RULE_dataTypeLength);
5746 		int _la;
5747 		try {
5748 			enterOuterAlt(_localctx, 1);
5749 			{
5750 			setState(1334);
5751 			match(LP_);
5752 			setState(1340);
5753 			_errHandler.sync(this);
5754 			_la = _input.LA(1);
5755 			if (_la==NUMBER_) {
5756 				{
5757 				setState(1335);
5758 				match(NUMBER_);
5759 				setState(1338);
5760 				_errHandler.sync(this);
5761 				_la = _input.LA(1);
5762 				if (_la==COMMA_) {
5763 					{
5764 					setState(1336);
5765 					match(COMMA_);
5766 					setState(1337);
5767 					match(NUMBER_);
5768 					}
5769 				}
5770 
5771 				}
5772 			}
5773 
5774 			setState(1342);
5775 			match(RP_);
5776 			}
5777 		}
5778 		catch (RecognitionException re) {
5779 			_localctx.exception = re;
5780 			_errHandler.reportError(this, re);
5781 			_errHandler.recover(this, re);
5782 		}
5783 		finally {
5784 			exitRule();
5785 		}
5786 		return _localctx;
5787 	}
5788 
5789 	public static class PrimaryKeyContext extends ParserRuleContext {
5790 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
5791 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
5792 		public PrimaryKeyContext(ParserRuleContext parent, int invokingState) {
5793 			super(parent, invokingState);
5794 		}
5795 		@Override public int getRuleIndex() { return RULE_primaryKey; }
5796 		@Override
5797 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5798 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKey(this);
5799 			else return visitor.visitChildren(this);
5800 		}
5801 	}
5802 
5803 	public final PrimaryKeyContext primaryKey() throws RecognitionException {
5804 		PrimaryKeyContext _localctx = new PrimaryKeyContext(_ctx, getState());
5805 		enterRule(_localctx, 96, RULE_primaryKey);
5806 		int _la;
5807 		try {
5808 			enterOuterAlt(_localctx, 1);
5809 			{
5810 			setState(1345);
5811 			_errHandler.sync(this);
5812 			_la = _input.LA(1);
5813 			if (_la==PRIMARY) {
5814 				{
5815 				setState(1344);
5816 				match(PRIMARY);
5817 				}
5818 			}
5819 
5820 			setState(1347);
5821 			match(KEY);
5822 			}
5823 		}
5824 		catch (RecognitionException re) {
5825 			_localctx.exception = re;
5826 			_errHandler.reportError(this, re);
5827 			_errHandler.recover(this, re);
5828 		}
5829 		finally {
5830 			exitRule();
5831 		}
5832 		return _localctx;
5833 	}
5834 
5835 	public static class ExprContext extends ParserRuleContext {
5836 		public BooleanPrimaryContext booleanPrimary() {
5837 			return getRuleContext(BooleanPrimaryContext.class,0);
5838 		}
5839 		public NotOperatorContext notOperator() {
5840 			return getRuleContext(NotOperatorContext.class,0);
5841 		}
5842 		public List<ExprContext> expr() {
5843 			return getRuleContexts(ExprContext.class);
5844 		}
5845 		public ExprContext expr(int i) {
5846 			return getRuleContext(ExprContext.class,i);
5847 		}
5848 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5849 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5850 		public AndOperatorContext andOperator() {
5851 			return getRuleContext(AndOperatorContext.class,0);
5852 		}
5853 		public OrOperatorContext orOperator() {
5854 			return getRuleContext(OrOperatorContext.class,0);
5855 		}
5856 		public DistinctFromContext distinctFrom() {
5857 			return getRuleContext(DistinctFromContext.class,0);
5858 		}
5859 		public ExprContext(ParserRuleContext parent, int invokingState) {
5860 			super(parent, invokingState);
5861 		}
5862 		@Override public int getRuleIndex() { return RULE_expr; }
5863 		@Override
5864 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5865 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExpr(this);
5866 			else return visitor.visitChildren(this);
5867 		}
5868 	}
5869 
5870 	public final ExprContext expr() throws RecognitionException {
5871 		return expr(0);
5872 	}
5873 
5874 	private ExprContext expr(int _p) throws RecognitionException {
5875 		ParserRuleContext _parentctx = _ctx;
5876 		int _parentState = getState();
5877 		ExprContext _localctx = new ExprContext(_ctx, _parentState);
5878 		ExprContext _prevctx = _localctx;
5879 		int _startState = 98;
5880 		enterRecursionRule(_localctx, 98, RULE_expr, _p);
5881 		try {
5882 			int _alt;
5883 			enterOuterAlt(_localctx, 1);
5884 			{
5885 			setState(1358);
5886 			_errHandler.sync(this);
5887 			switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
5888 			case 1:
5889 				{
5890 				setState(1350);
5891 				booleanPrimary(0);
5892 				}
5893 				break;
5894 			case 2:
5895 				{
5896 				setState(1351);
5897 				notOperator();
5898 				setState(1352);
5899 				expr(2);
5900 				}
5901 				break;
5902 			case 3:
5903 				{
5904 				setState(1354);
5905 				match(LP_);
5906 				setState(1355);
5907 				expr(0);
5908 				setState(1356);
5909 				match(RP_);
5910 				}
5911 				break;
5912 			}
5913 			_ctx.stop = _input.LT(-1);
5914 			setState(1374);
5915 			_errHandler.sync(this);
5916 			_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
5917 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
5918 				if ( _alt==1 ) {
5919 					if ( _parseListeners!=null ) triggerExitRuleEvent();
5920 					_prevctx = _localctx;
5921 					{
5922 					setState(1372);
5923 					_errHandler.sync(this);
5924 					switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
5925 					case 1:
5926 						{
5927 						_localctx = new ExprContext(_parentctx, _parentState);
5928 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5929 						setState(1360);
5930 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
5931 						setState(1361);
5932 						andOperator();
5933 						setState(1362);
5934 						expr(6);
5935 						}
5936 						break;
5937 					case 2:
5938 						{
5939 						_localctx = new ExprContext(_parentctx, _parentState);
5940 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5941 						setState(1364);
5942 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
5943 						setState(1365);
5944 						orOperator();
5945 						setState(1366);
5946 						expr(5);
5947 						}
5948 						break;
5949 					case 3:
5950 						{
5951 						_localctx = new ExprContext(_parentctx, _parentState);
5952 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5953 						setState(1368);
5954 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
5955 						setState(1369);
5956 						distinctFrom();
5957 						setState(1370);
5958 						expr(4);
5959 						}
5960 						break;
5961 					}
5962 					} 
5963 				}
5964 				setState(1376);
5965 				_errHandler.sync(this);
5966 				_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
5967 			}
5968 			}
5969 		}
5970 		catch (RecognitionException re) {
5971 			_localctx.exception = re;
5972 			_errHandler.reportError(this, re);
5973 			_errHandler.recover(this, re);
5974 		}
5975 		finally {
5976 			unrollRecursionContexts(_parentctx);
5977 		}
5978 		return _localctx;
5979 	}
5980 
5981 	public static class AndOperatorContext extends ParserRuleContext {
5982 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
5983 		public TerminalNode AND_() { return getToken(SQLServerStatementParser.AND_, 0); }
5984 		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
5985 			super(parent, invokingState);
5986 		}
5987 		@Override public int getRuleIndex() { return RULE_andOperator; }
5988 		@Override
5989 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5990 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAndOperator(this);
5991 			else return visitor.visitChildren(this);
5992 		}
5993 	}
5994 
5995 	public final AndOperatorContext andOperator() throws RecognitionException {
5996 		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
5997 		enterRule(_localctx, 100, RULE_andOperator);
5998 		int _la;
5999 		try {
6000 			enterOuterAlt(_localctx, 1);
6001 			{
6002 			setState(1377);
6003 			_la = _input.LA(1);
6004 			if ( !(_la==AND_ || _la==AND) ) {
6005 			_errHandler.recoverInline(this);
6006 			}
6007 			else {
6008 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6009 				_errHandler.reportMatch(this);
6010 				consume();
6011 			}
6012 			}
6013 		}
6014 		catch (RecognitionException re) {
6015 			_localctx.exception = re;
6016 			_errHandler.reportError(this, re);
6017 			_errHandler.recover(this, re);
6018 		}
6019 		finally {
6020 			exitRule();
6021 		}
6022 		return _localctx;
6023 	}
6024 
6025 	public static class OrOperatorContext extends ParserRuleContext {
6026 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
6027 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6028 		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
6029 			super(parent, invokingState);
6030 		}
6031 		@Override public int getRuleIndex() { return RULE_orOperator; }
6032 		@Override
6033 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6034 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrOperator(this);
6035 			else return visitor.visitChildren(this);
6036 		}
6037 	}
6038 
6039 	public final OrOperatorContext orOperator() throws RecognitionException {
6040 		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
6041 		enterRule(_localctx, 102, RULE_orOperator);
6042 		int _la;
6043 		try {
6044 			enterOuterAlt(_localctx, 1);
6045 			{
6046 			setState(1379);
6047 			_la = _input.LA(1);
6048 			if ( !(_la==OR_ || _la==OR) ) {
6049 			_errHandler.recoverInline(this);
6050 			}
6051 			else {
6052 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6053 				_errHandler.reportMatch(this);
6054 				consume();
6055 			}
6056 			}
6057 		}
6058 		catch (RecognitionException re) {
6059 			_localctx.exception = re;
6060 			_errHandler.reportError(this, re);
6061 			_errHandler.recover(this, re);
6062 		}
6063 		finally {
6064 			exitRule();
6065 		}
6066 		return _localctx;
6067 	}
6068 
6069 	public static class DistinctFromContext extends ParserRuleContext {
6070 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6071 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
6072 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
6073 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6074 		public DistinctFromContext(ParserRuleContext parent, int invokingState) {
6075 			super(parent, invokingState);
6076 		}
6077 		@Override public int getRuleIndex() { return RULE_distinctFrom; }
6078 		@Override
6079 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6080 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinctFrom(this);
6081 			else return visitor.visitChildren(this);
6082 		}
6083 	}
6084 
6085 	public final DistinctFromContext distinctFrom() throws RecognitionException {
6086 		DistinctFromContext _localctx = new DistinctFromContext(_ctx, getState());
6087 		enterRule(_localctx, 104, RULE_distinctFrom);
6088 		int _la;
6089 		try {
6090 			enterOuterAlt(_localctx, 1);
6091 			{
6092 			setState(1381);
6093 			match(IS);
6094 			setState(1383);
6095 			_errHandler.sync(this);
6096 			_la = _input.LA(1);
6097 			if (_la==NOT) {
6098 				{
6099 				setState(1382);
6100 				match(NOT);
6101 				}
6102 			}
6103 
6104 			setState(1385);
6105 			match(DISTINCT);
6106 			setState(1386);
6107 			match(FROM);
6108 			}
6109 		}
6110 		catch (RecognitionException re) {
6111 			_localctx.exception = re;
6112 			_errHandler.reportError(this, re);
6113 			_errHandler.recover(this, re);
6114 		}
6115 		finally {
6116 			exitRule();
6117 		}
6118 		return _localctx;
6119 	}
6120 
6121 	public static class NotOperatorContext extends ParserRuleContext {
6122 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6123 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6124 		public NotOperatorContext(ParserRuleContext parent, int invokingState) {
6125 			super(parent, invokingState);
6126 		}
6127 		@Override public int getRuleIndex() { return RULE_notOperator; }
6128 		@Override
6129 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6130 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNotOperator(this);
6131 			else return visitor.visitChildren(this);
6132 		}
6133 	}
6134 
6135 	public final NotOperatorContext notOperator() throws RecognitionException {
6136 		NotOperatorContext _localctx = new NotOperatorContext(_ctx, getState());
6137 		enterRule(_localctx, 106, RULE_notOperator);
6138 		int _la;
6139 		try {
6140 			enterOuterAlt(_localctx, 1);
6141 			{
6142 			setState(1388);
6143 			_la = _input.LA(1);
6144 			if ( !(_la==NOT_ || _la==NOT) ) {
6145 			_errHandler.recoverInline(this);
6146 			}
6147 			else {
6148 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6149 				_errHandler.reportMatch(this);
6150 				consume();
6151 			}
6152 			}
6153 		}
6154 		catch (RecognitionException re) {
6155 			_localctx.exception = re;
6156 			_errHandler.reportError(this, re);
6157 			_errHandler.recover(this, re);
6158 		}
6159 		finally {
6160 			exitRule();
6161 		}
6162 		return _localctx;
6163 	}
6164 
6165 	public static class BooleanPrimaryContext extends ParserRuleContext {
6166 		public PredicateContext predicate() {
6167 			return getRuleContext(PredicateContext.class,0);
6168 		}
6169 		public BooleanPrimaryContext booleanPrimary() {
6170 			return getRuleContext(BooleanPrimaryContext.class,0);
6171 		}
6172 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6173 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
6174 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
6175 		public TerminalNode UNKNOWN() { return getToken(SQLServerStatementParser.UNKNOWN, 0); }
6176 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
6177 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6178 		public TerminalNode SAFE_EQ_() { return getToken(SQLServerStatementParser.SAFE_EQ_, 0); }
6179 		public ComparisonOperatorContext comparisonOperator() {
6180 			return getRuleContext(ComparisonOperatorContext.class,0);
6181 		}
6182 		public SubqueryContext subquery() {
6183 			return getRuleContext(SubqueryContext.class,0);
6184 		}
6185 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
6186 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
6187 		public BooleanPrimaryContext(ParserRuleContext parent, int invokingState) {
6188 			super(parent, invokingState);
6189 		}
6190 		@Override public int getRuleIndex() { return RULE_booleanPrimary; }
6191 		@Override
6192 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6193 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanPrimary(this);
6194 			else return visitor.visitChildren(this);
6195 		}
6196 	}
6197 
6198 	public final BooleanPrimaryContext booleanPrimary() throws RecognitionException {
6199 		return booleanPrimary(0);
6200 	}
6201 
6202 	private BooleanPrimaryContext booleanPrimary(int _p) throws RecognitionException {
6203 		ParserRuleContext _parentctx = _ctx;
6204 		int _parentState = getState();
6205 		BooleanPrimaryContext _localctx = new BooleanPrimaryContext(_ctx, _parentState);
6206 		BooleanPrimaryContext _prevctx = _localctx;
6207 		int _startState = 108;
6208 		enterRecursionRule(_localctx, 108, RULE_booleanPrimary, _p);
6209 		int _la;
6210 		try {
6211 			int _alt;
6212 			enterOuterAlt(_localctx, 1);
6213 			{
6214 			{
6215 			setState(1391);
6216 			predicate();
6217 			}
6218 			_ctx.stop = _input.LT(-1);
6219 			setState(1413);
6220 			_errHandler.sync(this);
6221 			_alt = getInterpreter().adaptivePredict(_input,48,_ctx);
6222 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6223 				if ( _alt==1 ) {
6224 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6225 					_prevctx = _localctx;
6226 					{
6227 					setState(1411);
6228 					_errHandler.sync(this);
6229 					switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
6230 					case 1:
6231 						{
6232 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6233 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6234 						setState(1393);
6235 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6236 						setState(1394);
6237 						match(IS);
6238 						setState(1396);
6239 						_errHandler.sync(this);
6240 						_la = _input.LA(1);
6241 						if (_la==NOT) {
6242 							{
6243 							setState(1395);
6244 							match(NOT);
6245 							}
6246 						}
6247 
6248 						setState(1398);
6249 						_la = _input.LA(1);
6250 						if ( !(((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (NULL - 108)) | (1L << (TRUE - 108)) | (1L << (FALSE - 108)))) != 0) || _la==UNKNOWN) ) {
6251 						_errHandler.recoverInline(this);
6252 						}
6253 						else {
6254 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6255 							_errHandler.reportMatch(this);
6256 							consume();
6257 						}
6258 						}
6259 						break;
6260 					case 2:
6261 						{
6262 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6263 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6264 						setState(1399);
6265 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6266 						setState(1400);
6267 						match(SAFE_EQ_);
6268 						setState(1401);
6269 						predicate();
6270 						}
6271 						break;
6272 					case 3:
6273 						{
6274 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6275 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6276 						setState(1402);
6277 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6278 						setState(1403);
6279 						comparisonOperator();
6280 						setState(1404);
6281 						predicate();
6282 						}
6283 						break;
6284 					case 4:
6285 						{
6286 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6287 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6288 						setState(1406);
6289 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6290 						setState(1407);
6291 						comparisonOperator();
6292 						setState(1408);
6293 						_la = _input.LA(1);
6294 						if ( !(_la==ALL || _la==ANY) ) {
6295 						_errHandler.recoverInline(this);
6296 						}
6297 						else {
6298 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6299 							_errHandler.reportMatch(this);
6300 							consume();
6301 						}
6302 						setState(1409);
6303 						subquery();
6304 						}
6305 						break;
6306 					}
6307 					} 
6308 				}
6309 				setState(1415);
6310 				_errHandler.sync(this);
6311 				_alt = getInterpreter().adaptivePredict(_input,48,_ctx);
6312 			}
6313 			}
6314 		}
6315 		catch (RecognitionException re) {
6316 			_localctx.exception = re;
6317 			_errHandler.reportError(this, re);
6318 			_errHandler.recover(this, re);
6319 		}
6320 		finally {
6321 			unrollRecursionContexts(_parentctx);
6322 		}
6323 		return _localctx;
6324 	}
6325 
6326 	public static class ComparisonOperatorContext extends ParserRuleContext {
6327 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
6328 		public TerminalNode GTE_() { return getToken(SQLServerStatementParser.GTE_, 0); }
6329 		public TerminalNode GT_() { return getToken(SQLServerStatementParser.GT_, 0); }
6330 		public TerminalNode LTE_() { return getToken(SQLServerStatementParser.LTE_, 0); }
6331 		public TerminalNode LT_() { return getToken(SQLServerStatementParser.LT_, 0); }
6332 		public TerminalNode NEQ_() { return getToken(SQLServerStatementParser.NEQ_, 0); }
6333 		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
6334 			super(parent, invokingState);
6335 		}
6336 		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
6337 		@Override
6338 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6339 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComparisonOperator(this);
6340 			else return visitor.visitChildren(this);
6341 		}
6342 	}
6343 
6344 	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
6345 		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
6346 		enterRule(_localctx, 110, RULE_comparisonOperator);
6347 		int _la;
6348 		try {
6349 			enterOuterAlt(_localctx, 1);
6350 			{
6351 			setState(1416);
6352 			_la = _input.LA(1);
6353 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
6354 			_errHandler.recoverInline(this);
6355 			}
6356 			else {
6357 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6358 				_errHandler.reportMatch(this);
6359 				consume();
6360 			}
6361 			}
6362 		}
6363 		catch (RecognitionException re) {
6364 			_localctx.exception = re;
6365 			_errHandler.reportError(this, re);
6366 			_errHandler.recover(this, re);
6367 		}
6368 		finally {
6369 			exitRule();
6370 		}
6371 		return _localctx;
6372 	}
6373 
6374 	public static class PredicateContext extends ParserRuleContext {
6375 		public List<BitExprContext> bitExpr() {
6376 			return getRuleContexts(BitExprContext.class);
6377 		}
6378 		public BitExprContext bitExpr(int i) {
6379 			return getRuleContext(BitExprContext.class,i);
6380 		}
6381 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
6382 		public SubqueryContext subquery() {
6383 			return getRuleContext(SubqueryContext.class,0);
6384 		}
6385 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6386 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6387 		public List<ExprContext> expr() {
6388 			return getRuleContexts(ExprContext.class);
6389 		}
6390 		public ExprContext expr(int i) {
6391 			return getRuleContext(ExprContext.class,i);
6392 		}
6393 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6394 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6395 		public TerminalNode COMMA_(int i) {
6396 			return getToken(SQLServerStatementParser.COMMA_, i);
6397 		}
6398 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
6399 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
6400 		public PredicateContext predicate() {
6401 			return getRuleContext(PredicateContext.class,0);
6402 		}
6403 		public TerminalNode LIKE() { return getToken(SQLServerStatementParser.LIKE, 0); }
6404 		public List<SimpleExprContext> simpleExpr() {
6405 			return getRuleContexts(SimpleExprContext.class);
6406 		}
6407 		public SimpleExprContext simpleExpr(int i) {
6408 			return getRuleContext(SimpleExprContext.class,i);
6409 		}
6410 		public TerminalNode ESCAPE() { return getToken(SQLServerStatementParser.ESCAPE, 0); }
6411 		public PredicateContext(ParserRuleContext parent, int invokingState) {
6412 			super(parent, invokingState);
6413 		}
6414 		@Override public int getRuleIndex() { return RULE_predicate; }
6415 		@Override
6416 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6417 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPredicate(this);
6418 			else return visitor.visitChildren(this);
6419 		}
6420 	}
6421 
6422 	public final PredicateContext predicate() throws RecognitionException {
6423 		PredicateContext _localctx = new PredicateContext(_ctx, getState());
6424 		enterRule(_localctx, 112, RULE_predicate);
6425 		int _la;
6426 		try {
6427 			setState(1461);
6428 			_errHandler.sync(this);
6429 			switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) {
6430 			case 1:
6431 				enterOuterAlt(_localctx, 1);
6432 				{
6433 				setState(1418);
6434 				bitExpr(0);
6435 				setState(1420);
6436 				_errHandler.sync(this);
6437 				_la = _input.LA(1);
6438 				if (_la==NOT) {
6439 					{
6440 					setState(1419);
6441 					match(NOT);
6442 					}
6443 				}
6444 
6445 				setState(1422);
6446 				match(IN);
6447 				setState(1423);
6448 				subquery();
6449 				}
6450 				break;
6451 			case 2:
6452 				enterOuterAlt(_localctx, 2);
6453 				{
6454 				setState(1425);
6455 				bitExpr(0);
6456 				setState(1427);
6457 				_errHandler.sync(this);
6458 				_la = _input.LA(1);
6459 				if (_la==NOT) {
6460 					{
6461 					setState(1426);
6462 					match(NOT);
6463 					}
6464 				}
6465 
6466 				setState(1429);
6467 				match(IN);
6468 				setState(1430);
6469 				match(LP_);
6470 				setState(1431);
6471 				expr(0);
6472 				setState(1436);
6473 				_errHandler.sync(this);
6474 				_la = _input.LA(1);
6475 				while (_la==COMMA_) {
6476 					{
6477 					{
6478 					setState(1432);
6479 					match(COMMA_);
6480 					setState(1433);
6481 					expr(0);
6482 					}
6483 					}
6484 					setState(1438);
6485 					_errHandler.sync(this);
6486 					_la = _input.LA(1);
6487 				}
6488 				setState(1439);
6489 				match(RP_);
6490 				}
6491 				break;
6492 			case 3:
6493 				enterOuterAlt(_localctx, 3);
6494 				{
6495 				setState(1441);
6496 				bitExpr(0);
6497 				setState(1443);
6498 				_errHandler.sync(this);
6499 				_la = _input.LA(1);
6500 				if (_la==NOT) {
6501 					{
6502 					setState(1442);
6503 					match(NOT);
6504 					}
6505 				}
6506 
6507 				setState(1445);
6508 				match(BETWEEN);
6509 				setState(1446);
6510 				bitExpr(0);
6511 				setState(1447);
6512 				match(AND);
6513 				setState(1448);
6514 				predicate();
6515 				}
6516 				break;
6517 			case 4:
6518 				enterOuterAlt(_localctx, 4);
6519 				{
6520 				setState(1450);
6521 				bitExpr(0);
6522 				setState(1452);
6523 				_errHandler.sync(this);
6524 				_la = _input.LA(1);
6525 				if (_la==NOT) {
6526 					{
6527 					setState(1451);
6528 					match(NOT);
6529 					}
6530 				}
6531 
6532 				setState(1454);
6533 				match(LIKE);
6534 				setState(1455);
6535 				simpleExpr(0);
6536 				setState(1458);
6537 				_errHandler.sync(this);
6538 				switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
6539 				case 1:
6540 					{
6541 					setState(1456);
6542 					match(ESCAPE);
6543 					setState(1457);
6544 					simpleExpr(0);
6545 					}
6546 					break;
6547 				}
6548 				}
6549 				break;
6550 			case 5:
6551 				enterOuterAlt(_localctx, 5);
6552 				{
6553 				setState(1460);
6554 				bitExpr(0);
6555 				}
6556 				break;
6557 			}
6558 		}
6559 		catch (RecognitionException re) {
6560 			_localctx.exception = re;
6561 			_errHandler.reportError(this, re);
6562 			_errHandler.recover(this, re);
6563 		}
6564 		finally {
6565 			exitRule();
6566 		}
6567 		return _localctx;
6568 	}
6569 
6570 	public static class BitExprContext extends ParserRuleContext {
6571 		public SimpleExprContext simpleExpr() {
6572 			return getRuleContext(SimpleExprContext.class,0);
6573 		}
6574 		public List<BitExprContext> bitExpr() {
6575 			return getRuleContexts(BitExprContext.class);
6576 		}
6577 		public BitExprContext bitExpr(int i) {
6578 			return getRuleContext(BitExprContext.class,i);
6579 		}
6580 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
6581 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
6582 		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_LEFT_SHIFT_, 0); }
6583 		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
6584 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6585 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6586 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6587 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
6588 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
6589 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
6590 		public BitExprContext(ParserRuleContext parent, int invokingState) {
6591 			super(parent, invokingState);
6592 		}
6593 		@Override public int getRuleIndex() { return RULE_bitExpr; }
6594 		@Override
6595 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6596 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitExpr(this);
6597 			else return visitor.visitChildren(this);
6598 		}
6599 	}
6600 
6601 	public final BitExprContext bitExpr() throws RecognitionException {
6602 		return bitExpr(0);
6603 	}
6604 
6605 	private BitExprContext bitExpr(int _p) throws RecognitionException {
6606 		ParserRuleContext _parentctx = _ctx;
6607 		int _parentState = getState();
6608 		BitExprContext _localctx = new BitExprContext(_ctx, _parentState);
6609 		BitExprContext _prevctx = _localctx;
6610 		int _startState = 114;
6611 		enterRecursionRule(_localctx, 114, RULE_bitExpr, _p);
6612 		try {
6613 			int _alt;
6614 			enterOuterAlt(_localctx, 1);
6615 			{
6616 			{
6617 			setState(1464);
6618 			simpleExpr(0);
6619 			}
6620 			_ctx.stop = _input.LT(-1);
6621 			setState(1498);
6622 			_errHandler.sync(this);
6623 			_alt = getInterpreter().adaptivePredict(_input,57,_ctx);
6624 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6625 				if ( _alt==1 ) {
6626 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6627 					_prevctx = _localctx;
6628 					{
6629 					setState(1496);
6630 					_errHandler.sync(this);
6631 					switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
6632 					case 1:
6633 						{
6634 						_localctx = new BitExprContext(_parentctx, _parentState);
6635 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6636 						setState(1466);
6637 						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
6638 						setState(1467);
6639 						match(VERTICAL_BAR_);
6640 						setState(1468);
6641 						bitExpr(12);
6642 						}
6643 						break;
6644 					case 2:
6645 						{
6646 						_localctx = new BitExprContext(_parentctx, _parentState);
6647 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6648 						setState(1469);
6649 						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
6650 						setState(1470);
6651 						match(AMPERSAND_);
6652 						setState(1471);
6653 						bitExpr(11);
6654 						}
6655 						break;
6656 					case 3:
6657 						{
6658 						_localctx = new BitExprContext(_parentctx, _parentState);
6659 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6660 						setState(1472);
6661 						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
6662 						setState(1473);
6663 						match(SIGNED_LEFT_SHIFT_);
6664 						setState(1474);
6665 						bitExpr(10);
6666 						}
6667 						break;
6668 					case 4:
6669 						{
6670 						_localctx = new BitExprContext(_parentctx, _parentState);
6671 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6672 						setState(1475);
6673 						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
6674 						setState(1476);
6675 						match(SIGNED_RIGHT_SHIFT_);
6676 						setState(1477);
6677 						bitExpr(9);
6678 						}
6679 						break;
6680 					case 5:
6681 						{
6682 						_localctx = new BitExprContext(_parentctx, _parentState);
6683 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6684 						setState(1478);
6685 						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6686 						setState(1479);
6687 						match(PLUS_);
6688 						setState(1480);
6689 						bitExpr(8);
6690 						}
6691 						break;
6692 					case 6:
6693 						{
6694 						_localctx = new BitExprContext(_parentctx, _parentState);
6695 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6696 						setState(1481);
6697 						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
6698 						setState(1482);
6699 						match(MINUS_);
6700 						setState(1483);
6701 						bitExpr(7);
6702 						}
6703 						break;
6704 					case 7:
6705 						{
6706 						_localctx = new BitExprContext(_parentctx, _parentState);
6707 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6708 						setState(1484);
6709 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6710 						setState(1485);
6711 						match(ASTERISK_);
6712 						setState(1486);
6713 						bitExpr(6);
6714 						}
6715 						break;
6716 					case 8:
6717 						{
6718 						_localctx = new BitExprContext(_parentctx, _parentState);
6719 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6720 						setState(1487);
6721 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6722 						setState(1488);
6723 						match(SLASH_);
6724 						setState(1489);
6725 						bitExpr(5);
6726 						}
6727 						break;
6728 					case 9:
6729 						{
6730 						_localctx = new BitExprContext(_parentctx, _parentState);
6731 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6732 						setState(1490);
6733 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6734 						setState(1491);
6735 						match(MOD_);
6736 						setState(1492);
6737 						bitExpr(4);
6738 						}
6739 						break;
6740 					case 10:
6741 						{
6742 						_localctx = new BitExprContext(_parentctx, _parentState);
6743 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6744 						setState(1493);
6745 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6746 						setState(1494);
6747 						match(CARET_);
6748 						setState(1495);
6749 						bitExpr(3);
6750 						}
6751 						break;
6752 					}
6753 					} 
6754 				}
6755 				setState(1500);
6756 				_errHandler.sync(this);
6757 				_alt = getInterpreter().adaptivePredict(_input,57,_ctx);
6758 			}
6759 			}
6760 		}
6761 		catch (RecognitionException re) {
6762 			_localctx.exception = re;
6763 			_errHandler.reportError(this, re);
6764 			_errHandler.recover(this, re);
6765 		}
6766 		finally {
6767 			unrollRecursionContexts(_parentctx);
6768 		}
6769 		return _localctx;
6770 	}
6771 
6772 	public static class SimpleExprContext extends ParserRuleContext {
6773 		public FunctionCallContext functionCall() {
6774 			return getRuleContext(FunctionCallContext.class,0);
6775 		}
6776 		public ParameterMarkerContext parameterMarker() {
6777 			return getRuleContext(ParameterMarkerContext.class,0);
6778 		}
6779 		public LiteralsContext literals() {
6780 			return getRuleContext(LiteralsContext.class,0);
6781 		}
6782 		public ColumnNameContext columnName() {
6783 			return getRuleContext(ColumnNameContext.class,0);
6784 		}
6785 		public VariableNameContext variableName() {
6786 			return getRuleContext(VariableNameContext.class,0);
6787 		}
6788 		public List<SimpleExprContext> simpleExpr() {
6789 			return getRuleContexts(SimpleExprContext.class);
6790 		}
6791 		public SimpleExprContext simpleExpr(int i) {
6792 			return getRuleContext(SimpleExprContext.class,i);
6793 		}
6794 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6795 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6796 		public TerminalNode TILDE_() { return getToken(SQLServerStatementParser.TILDE_, 0); }
6797 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6798 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
6799 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
6800 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6801 		public List<ExprContext> expr() {
6802 			return getRuleContexts(ExprContext.class);
6803 		}
6804 		public ExprContext expr(int i) {
6805 			return getRuleContext(ExprContext.class,i);
6806 		}
6807 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6808 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
6809 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6810 		public TerminalNode COMMA_(int i) {
6811 			return getToken(SQLServerStatementParser.COMMA_, i);
6812 		}
6813 		public SubqueryContext subquery() {
6814 			return getRuleContext(SubqueryContext.class,0);
6815 		}
6816 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
6817 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
6818 		public IdentifierContext identifier() {
6819 			return getRuleContext(IdentifierContext.class,0);
6820 		}
6821 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
6822 		public CaseExpressionContext caseExpression() {
6823 			return getRuleContext(CaseExpressionContext.class,0);
6824 		}
6825 		public PrivateExprOfDbContext privateExprOfDb() {
6826 			return getRuleContext(PrivateExprOfDbContext.class,0);
6827 		}
6828 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6829 		public SimpleExprContext(ParserRuleContext parent, int invokingState) {
6830 			super(parent, invokingState);
6831 		}
6832 		@Override public int getRuleIndex() { return RULE_simpleExpr; }
6833 		@Override
6834 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6835 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSimpleExpr(this);
6836 			else return visitor.visitChildren(this);
6837 		}
6838 	}
6839 
6840 	public final SimpleExprContext simpleExpr() throws RecognitionException {
6841 		return simpleExpr(0);
6842 	}
6843 
6844 	private SimpleExprContext simpleExpr(int _p) throws RecognitionException {
6845 		ParserRuleContext _parentctx = _ctx;
6846 		int _parentState = getState();
6847 		SimpleExprContext _localctx = new SimpleExprContext(_ctx, _parentState);
6848 		SimpleExprContext _prevctx = _localctx;
6849 		int _startState = 116;
6850 		enterRecursionRule(_localctx, 116, RULE_simpleExpr, _p);
6851 		int _la;
6852 		try {
6853 			int _alt;
6854 			enterOuterAlt(_localctx, 1);
6855 			{
6856 			setState(1534);
6857 			_errHandler.sync(this);
6858 			switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
6859 			case 1:
6860 				{
6861 				setState(1502);
6862 				functionCall();
6863 				}
6864 				break;
6865 			case 2:
6866 				{
6867 				setState(1503);
6868 				parameterMarker();
6869 				}
6870 				break;
6871 			case 3:
6872 				{
6873 				setState(1504);
6874 				literals();
6875 				}
6876 				break;
6877 			case 4:
6878 				{
6879 				setState(1505);
6880 				columnName();
6881 				}
6882 				break;
6883 			case 5:
6884 				{
6885 				setState(1506);
6886 				variableName();
6887 				}
6888 				break;
6889 			case 6:
6890 				{
6891 				setState(1507);
6892 				_la = _input.LA(1);
6893 				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << DOLLAR_))) != 0) || _la==BINARY) ) {
6894 				_errHandler.recoverInline(this);
6895 				}
6896 				else {
6897 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6898 					_errHandler.reportMatch(this);
6899 					consume();
6900 				}
6901 				setState(1508);
6902 				simpleExpr(6);
6903 				}
6904 				break;
6905 			case 7:
6906 				{
6907 				setState(1510);
6908 				_errHandler.sync(this);
6909 				_la = _input.LA(1);
6910 				if (_la==ROW) {
6911 					{
6912 					setState(1509);
6913 					match(ROW);
6914 					}
6915 				}
6916 
6917 				setState(1512);
6918 				match(LP_);
6919 				setState(1513);
6920 				expr(0);
6921 				setState(1518);
6922 				_errHandler.sync(this);
6923 				_la = _input.LA(1);
6924 				while (_la==COMMA_) {
6925 					{
6926 					{
6927 					setState(1514);
6928 					match(COMMA_);
6929 					setState(1515);
6930 					expr(0);
6931 					}
6932 					}
6933 					setState(1520);
6934 					_errHandler.sync(this);
6935 					_la = _input.LA(1);
6936 				}
6937 				setState(1521);
6938 				match(RP_);
6939 				}
6940 				break;
6941 			case 8:
6942 				{
6943 				setState(1524);
6944 				_errHandler.sync(this);
6945 				_la = _input.LA(1);
6946 				if (_la==EXISTS) {
6947 					{
6948 					setState(1523);
6949 					match(EXISTS);
6950 					}
6951 				}
6952 
6953 				setState(1526);
6954 				subquery();
6955 				}
6956 				break;
6957 			case 9:
6958 				{
6959 				setState(1527);
6960 				match(LBE_);
6961 				setState(1528);
6962 				identifier();
6963 				setState(1529);
6964 				expr(0);
6965 				setState(1530);
6966 				match(RBE_);
6967 				}
6968 				break;
6969 			case 10:
6970 				{
6971 				setState(1532);
6972 				caseExpression();
6973 				}
6974 				break;
6975 			case 11:
6976 				{
6977 				setState(1533);
6978 				privateExprOfDb();
6979 				}
6980 				break;
6981 			}
6982 			_ctx.stop = _input.LT(-1);
6983 			setState(1541);
6984 			_errHandler.sync(this);
6985 			_alt = getInterpreter().adaptivePredict(_input,62,_ctx);
6986 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6987 				if ( _alt==1 ) {
6988 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6989 					_prevctx = _localctx;
6990 					{
6991 					{
6992 					_localctx = new SimpleExprContext(_parentctx, _parentState);
6993 					pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
6994 					setState(1536);
6995 					if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6996 					setState(1537);
6997 					match(OR_);
6998 					setState(1538);
6999 					simpleExpr(8);
7000 					}
7001 					} 
7002 				}
7003 				setState(1543);
7004 				_errHandler.sync(this);
7005 				_alt = getInterpreter().adaptivePredict(_input,62,_ctx);
7006 			}
7007 			}
7008 		}
7009 		catch (RecognitionException re) {
7010 			_localctx.exception = re;
7011 			_errHandler.reportError(this, re);
7012 			_errHandler.recover(this, re);
7013 		}
7014 		finally {
7015 			unrollRecursionContexts(_parentctx);
7016 		}
7017 		return _localctx;
7018 	}
7019 
7020 	public static class FunctionCallContext extends ParserRuleContext {
7021 		public AggregationFunctionContext aggregationFunction() {
7022 			return getRuleContext(AggregationFunctionContext.class,0);
7023 		}
7024 		public SpecialFunctionContext specialFunction() {
7025 			return getRuleContext(SpecialFunctionContext.class,0);
7026 		}
7027 		public RegularFunctionContext regularFunction() {
7028 			return getRuleContext(RegularFunctionContext.class,0);
7029 		}
7030 		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
7031 			super(parent, invokingState);
7032 		}
7033 		@Override public int getRuleIndex() { return RULE_functionCall; }
7034 		@Override
7035 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7036 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionCall(this);
7037 			else return visitor.visitChildren(this);
7038 		}
7039 	}
7040 
7041 	public final FunctionCallContext functionCall() throws RecognitionException {
7042 		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
7043 		enterRule(_localctx, 118, RULE_functionCall);
7044 		try {
7045 			setState(1547);
7046 			_errHandler.sync(this);
7047 			switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
7048 			case 1:
7049 				enterOuterAlt(_localctx, 1);
7050 				{
7051 				setState(1544);
7052 				aggregationFunction();
7053 				}
7054 				break;
7055 			case 2:
7056 				enterOuterAlt(_localctx, 2);
7057 				{
7058 				setState(1545);
7059 				specialFunction();
7060 				}
7061 				break;
7062 			case 3:
7063 				enterOuterAlt(_localctx, 3);
7064 				{
7065 				setState(1546);
7066 				regularFunction();
7067 				}
7068 				break;
7069 			}
7070 		}
7071 		catch (RecognitionException re) {
7072 			_localctx.exception = re;
7073 			_errHandler.reportError(this, re);
7074 			_errHandler.recover(this, re);
7075 		}
7076 		finally {
7077 			exitRule();
7078 		}
7079 		return _localctx;
7080 	}
7081 
7082 	public static class AggregationFunctionContext extends ParserRuleContext {
7083 		public AggregationFunctionNameContext aggregationFunctionName() {
7084 			return getRuleContext(AggregationFunctionNameContext.class,0);
7085 		}
7086 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7087 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7088 		public DistinctContext distinct() {
7089 			return getRuleContext(DistinctContext.class,0);
7090 		}
7091 		public List<ExprContext> expr() {
7092 			return getRuleContexts(ExprContext.class);
7093 		}
7094 		public ExprContext expr(int i) {
7095 			return getRuleContext(ExprContext.class,i);
7096 		}
7097 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
7098 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7099 		public TerminalNode COMMA_(int i) {
7100 			return getToken(SQLServerStatementParser.COMMA_, i);
7101 		}
7102 		public AggregationFunctionContext(ParserRuleContext parent, int invokingState) {
7103 			super(parent, invokingState);
7104 		}
7105 		@Override public int getRuleIndex() { return RULE_aggregationFunction; }
7106 		@Override
7107 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7108 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunction(this);
7109 			else return visitor.visitChildren(this);
7110 		}
7111 	}
7112 
7113 	public final AggregationFunctionContext aggregationFunction() throws RecognitionException {
7114 		AggregationFunctionContext _localctx = new AggregationFunctionContext(_ctx, getState());
7115 		enterRule(_localctx, 120, RULE_aggregationFunction);
7116 		int _la;
7117 		try {
7118 			enterOuterAlt(_localctx, 1);
7119 			{
7120 			setState(1549);
7121 			aggregationFunctionName();
7122 			setState(1550);
7123 			match(LP_);
7124 			setState(1552);
7125 			_errHandler.sync(this);
7126 			_la = _input.LA(1);
7127 			if (_la==DISTINCT) {
7128 				{
7129 				setState(1551);
7130 				distinct();
7131 				}
7132 			}
7133 
7134 			setState(1563);
7135 			_errHandler.sync(this);
7136 			switch (_input.LA(1)) {
7137 			case NOT_:
7138 			case TILDE_:
7139 			case PLUS_:
7140 			case MINUS_:
7141 			case LP_:
7142 			case LBE_:
7143 			case QUESTION_:
7144 			case DOLLAR_:
7145 			case TRUNCATE:
7146 			case SCHEMA:
7147 			case COLUMNS:
7148 			case PRECISION:
7149 			case FUNCTION:
7150 			case TRIGGER:
7151 			case CASE:
7152 			case CAST:
7153 			case TRIM:
7154 			case SUBSTRING:
7155 			case OFF:
7156 			case IF:
7157 			case NOT:
7158 			case NULL:
7159 			case TRUE:
7160 			case FALSE:
7161 			case EXISTS:
7162 			case GROUP:
7163 			case LIMIT:
7164 			case OFFSET:
7165 			case SAVEPOINT:
7166 			case BOOLEAN:
7167 			case CHAR:
7168 			case ARRAY:
7169 			case INTERVAL:
7170 			case DATE:
7171 			case TIME:
7172 			case TIMESTAMP:
7173 			case LOCALTIME:
7174 			case LOCALTIMESTAMP:
7175 			case YEAR:
7176 			case QUARTER:
7177 			case MONTH:
7178 			case WEEK:
7179 			case DAY:
7180 			case SECOND:
7181 			case MICROSECOND:
7182 			case MAX:
7183 			case MIN:
7184 			case SUM:
7185 			case COUNT:
7186 			case AVG:
7187 			case ENABLE:
7188 			case DISABLE:
7189 			case INSTANCE:
7190 			case DO:
7191 			case DEFINER:
7192 			case SQL:
7193 			case CASCADED:
7194 			case LOCAL:
7195 			case NEXT:
7196 			case NAME:
7197 			case INTEGER:
7198 			case TYPE:
7199 			case TEXT:
7200 			case VIEWS:
7201 			case READ_ONLY:
7202 			case DATABASE:
7203 			case RETURNS:
7204 			case DATEPART:
7205 			case PASSWORD:
7206 			case JSON_OBJECT:
7207 			case JSON_ARRAY:
7208 			case FIRST_VALUE:
7209 			case LAST_VALUE:
7210 			case APPROX_PERCENTILE_CONT:
7211 			case APPROX_PERCENTILE_DISC:
7212 			case BINARY:
7213 			case HIDDEN_:
7214 			case MOD:
7215 			case PARTITION:
7216 			case PARTITIONS:
7217 			case TOP:
7218 			case ROW:
7219 			case ROWS:
7220 			case XOR:
7221 			case ALWAYS:
7222 			case ROLE:
7223 			case START:
7224 			case ALGORITHM:
7225 			case AUTO:
7226 			case BLOCKERS:
7227 			case CLUSTERED:
7228 			case NONCLUSTERED:
7229 			case COLUMNSTORE:
7230 			case CONTENT:
7231 			case CONVERT:
7232 			case YEARS:
7233 			case MONTHS:
7234 			case WEEKS:
7235 			case DAYS:
7236 			case MINUTES:
7237 			case DENY:
7238 			case DETERMINISTIC:
7239 			case DISTRIBUTION:
7240 			case DOCUMENT:
7241 			case DURABILITY:
7242 			case ENCRYPTED:
7243 			case FILESTREAM:
7244 			case FILETABLE:
7245 			case FILLFACTOR:
7246 			case FOLLOWING:
7247 			case HASH:
7248 			case HEAP:
7249 			case INBOUND:
7250 			case OUTBOUND:
7251 			case UNBOUNDED:
7252 			case INFINITE:
7253 			case LOGIN:
7254 			case MASKED:
7255 			case MAXDOP:
7256 			case MOVE:
7257 			case NOCHECK:
7258 			case OBJECT:
7259 			case ONLINE:
7260 			case OVER:
7261 			case PAGE:
7262 			case PAUSED:
7263 			case PERIOD:
7264 			case PERSISTED:
7265 			case PRECEDING:
7266 			case RANDOMIZED:
7267 			case RANGE:
7268 			case REBUILD:
7269 			case REPLICATE:
7270 			case REPLICATION:
7271 			case RESUMABLE:
7272 			case ROWGUIDCOL:
7273 			case SAVE:
7274 			case SELF:
7275 			case SPARSE:
7276 			case SWITCH:
7277 			case TRAN:
7278 			case TRANCOUNT:
7279 			case CONTROL:
7280 			case CONCAT:
7281 			case TAKE:
7282 			case OWNERSHIP:
7283 			case DEFINITION:
7284 			case APPLICATION:
7285 			case ASSEMBLY:
7286 			case SYMMETRIC:
7287 			case ASYMMETRIC:
7288 			case SERVER:
7289 			case RECEIVE:
7290 			case CHANGE:
7291 			case TRACE:
7292 			case TRACKING:
7293 			case RESOURCES:
7294 			case SETTINGS:
7295 			case STATE:
7296 			case AVAILABILITY:
7297 			case CREDENTIAL:
7298 			case ENDPOINT:
7299 			case EVENT:
7300 			case NOTIFICATION:
7301 			case LINKED:
7302 			case AUDIT:
7303 			case DDL:
7304 			case XML:
7305 			case IMPERSONATE:
7306 			case SECURABLES:
7307 			case AUTHENTICATE:
7308 			case EXTERNAL:
7309 			case ACCESS:
7310 			case ADMINISTER:
7311 			case BULK:
7312 			case OPERATIONS:
7313 			case UNSAFE:
7314 			case SHUTDOWN:
7315 			case SCOPED:
7316 			case CONFIGURATION:
7317 			case DATASPACE:
7318 			case SERVICE:
7319 			case CERTIFICATE:
7320 			case CONTRACT:
7321 			case ENCRYPTION:
7322 			case MASTER:
7323 			case DATA:
7324 			case SOURCE:
7325 			case FILE:
7326 			case FORMAT:
7327 			case LIBRARY:
7328 			case FULLTEXT:
7329 			case MASK:
7330 			case UNMASK:
7331 			case MESSAGE:
7332 			case REMOTE:
7333 			case BINDING:
7334 			case ROUTE:
7335 			case SECURITY:
7336 			case POLICY:
7337 			case AGGREGATE:
7338 			case QUEUE:
7339 			case RULE:
7340 			case SYNONYM:
7341 			case COLLECTION:
7342 			case SCRIPT:
7343 			case KILL:
7344 			case BACKUP:
7345 			case LOG:
7346 			case SHOWPLAN:
7347 			case SUBSCRIBE:
7348 			case QUERY:
7349 			case NOTIFICATIONS:
7350 			case CHECKPOINT:
7351 			case SEQUENCE:
7352 			case ABORT_AFTER_WAIT:
7353 			case ALLOW_PAGE_LOCKS:
7354 			case ALLOW_ROW_LOCKS:
7355 			case ALL_SPARSE_COLUMNS:
7356 			case BUCKET_COUNT:
7357 			case COLUMNSTORE_ARCHIVE:
7358 			case COLUMN_ENCRYPTION_KEY:
7359 			case COLUMN_SET:
7360 			case COMPRESSION_DELAY:
7361 			case DATABASE_DEAULT:
7362 			case DATA_COMPRESSION:
7363 			case DATA_CONSISTENCY_CHECK:
7364 			case ENCRYPTION_TYPE:
7365 			case SYSTEM_TIME:
7366 			case SYSTEM_VERSIONING:
7367 			case TEXTIMAGE_ON:
7368 			case WAIT_AT_LOW_PRIORITY:
7369 			case STATISTICS_INCREMENTAL:
7370 			case STATISTICS_NORECOMPUTE:
7371 			case ROUND_ROBIN:
7372 			case SCHEMA_AND_DATA:
7373 			case SCHEMA_ONLY:
7374 			case SORT_IN_TEMPDB:
7375 			case IGNORE_DUP_KEY:
7376 			case IMPLICIT_TRANSACTIONS:
7377 			case MAX_DURATION:
7378 			case MEMORY_OPTIMIZED:
7379 			case MIGRATION_STATE:
7380 			case PAD_INDEX:
7381 			case REMOTE_DATA_ARCHIVE:
7382 			case FILESTREAM_ON:
7383 			case FILETABLE_COLLATE_FILENAME:
7384 			case FILETABLE_DIRECTORY:
7385 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
7386 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
7387 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
7388 			case FILTER_PREDICATE:
7389 			case HISTORY_RETENTION_PERIOD:
7390 			case HISTORY_TABLE:
7391 			case LOCK_ESCALATION:
7392 			case DROP_EXISTING:
7393 			case ROW_NUMBER:
7394 			case FIRST:
7395 			case DATETIME2:
7396 			case OUTPUT:
7397 			case INSERTED:
7398 			case DELETED:
7399 			case FILENAME:
7400 			case SIZE:
7401 			case MAXSIZE:
7402 			case FILEGROWTH:
7403 			case UNLIMITED:
7404 			case KB:
7405 			case MB:
7406 			case GB:
7407 			case TB:
7408 			case CONTAINS:
7409 			case MEMORY_OPTIMIZED_DATA:
7410 			case FILEGROUP:
7411 			case NON_TRANSACTED_ACCESS:
7412 			case DB_CHAINING:
7413 			case TRUSTWORTHY:
7414 			case FORWARD_ONLY:
7415 			case KEYSET:
7416 			case FAST_FORWARD:
7417 			case SCROLL_LOCKS:
7418 			case OPTIMISTIC:
7419 			case TYPE_WARNING:
7420 			case SCHEMABINDING:
7421 			case CALLER:
7422 			case INPUT:
7423 			case OWNER:
7424 			case SNAPSHOT:
7425 			case REPEATABLE:
7426 			case SERIALIZABLE:
7427 			case NATIVE_COMPILATION:
7428 			case VIEW_METADATA:
7429 			case INSTEAD:
7430 			case APPEND:
7431 			case INCREMENT:
7432 			case CACHE:
7433 			case MINVALUE:
7434 			case MAXVALUE:
7435 			case RESTART:
7436 			case LOB_COMPACTION:
7437 			case COMPRESS_ALL_ROW_GROUPS:
7438 			case REORGANIZE:
7439 			case RESUME:
7440 			case PAUSE:
7441 			case ABORT:
7442 			case ACCELERATED_DATABASE_RECOVERY:
7443 			case PERSISTENT_VERSION_STORE_FILEGROUP:
7444 			case IMMEDIATE:
7445 			case NO_WAIT:
7446 			case TARGET_RECOVERY_TIME:
7447 			case SECONDS:
7448 			case HONOR_BROKER_PRIORITY:
7449 			case ERROR_BROKER_CONVERSATIONS:
7450 			case NEW_BROKER:
7451 			case DISABLE_BROKER:
7452 			case ENABLE_BROKER:
7453 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
7454 			case READ_COMMITTED_SNAPSHOT:
7455 			case ALLOW_SNAPSHOT_ISOLATION:
7456 			case RECURSIVE_TRIGGERS:
7457 			case QUOTED_IDENTIFIER:
7458 			case NUMERIC_ROUNDABORT:
7459 			case CONCAT_NULL_YIELDS_NULL:
7460 			case COMPATIBILITY_LEVEL:
7461 			case ARITHABORT:
7462 			case ANSI_WARNINGS:
7463 			case ANSI_PADDING:
7464 			case ANSI_NULLS:
7465 			case ANSI_NULL_DEFAULT:
7466 			case PAGE_VERIFY:
7467 			case CHECKSUM:
7468 			case TORN_PAGE_DETECTION:
7469 			case BULK_LOGGED:
7470 			case RECOVERY:
7471 			case TOTAL_EXECUTION_CPU_TIME_MS:
7472 			case TOTAL_COMPILE_CPU_TIME_MS:
7473 			case STALE_CAPTURE_POLICY_THRESHOLD:
7474 			case EXECUTION_COUNT:
7475 			case QUERY_CAPTURE_POLICY:
7476 			case WAIT_STATS_CAPTURE_MODE:
7477 			case MAX_PLANS_PER_QUERY:
7478 			case QUERY_CAPTURE_MODE:
7479 			case SIZE_BASED_CLEANUP_MODE:
7480 			case INTERVAL_LENGTH_MINUTES:
7481 			case MAX_STORAGE_SIZE_MB:
7482 			case DATA_FLUSH_INTERVAL_SECONDS:
7483 			case CLEANUP_POLICY:
7484 			case CUSTOM:
7485 			case STALE_QUERY_THRESHOLD_DAYS:
7486 			case OPERATION_MODE:
7487 			case QUERY_STORE:
7488 			case CURSOR_DEFAULT:
7489 			case GLOBAL:
7490 			case CURSOR_CLOSE_ON_COMMIT:
7491 			case HOURS:
7492 			case CHANGE_RETENTION:
7493 			case AUTO_CLEANUP:
7494 			case CHANGE_TRACKING:
7495 			case AUTOMATIC_TUNING:
7496 			case FORCE_LAST_GOOD_PLAN:
7497 			case AUTO_UPDATE_STATISTICS_ASYNC:
7498 			case AUTO_UPDATE_STATISTICS:
7499 			case AUTO_SHRINK:
7500 			case AUTO_CREATE_STATISTICS:
7501 			case INCREMENTAL:
7502 			case AUTO_CLOSE:
7503 			case DATA_RETENTION:
7504 			case TEMPORAL_HISTORY_RETENTION:
7505 			case EDITION:
7506 			case MIXED_PAGE_ALLOCATION:
7507 			case DISABLED:
7508 			case ALLOWED:
7509 			case HADR:
7510 			case MULTI_USER:
7511 			case RESTRICTED_USER:
7512 			case SINGLE_USER:
7513 			case OFFLINE:
7514 			case EMERGENCY:
7515 			case SUSPEND:
7516 			case DATE_CORRELATION_OPTIMIZATION:
7517 			case ELASTIC_POOL:
7518 			case SERVICE_OBJECTIVE:
7519 			case DATABASE_NAME:
7520 			case ALLOW_CONNECTIONS:
7521 			case GEO:
7522 			case NAMED:
7523 			case DATEFIRST:
7524 			case BACKUP_STORAGE_REDUNDANCY:
7525 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
7526 			case SECONDARY:
7527 			case FAILOVER:
7528 			case DEFAULT_FULLTEXT_LANGUAGE:
7529 			case DEFAULT_LANGUAGE:
7530 			case INLINE:
7531 			case NESTED_TRIGGERS:
7532 			case TRANSFORM_NOISE_WORDS:
7533 			case TWO_DIGIT_YEAR_CUTOFF:
7534 			case PERSISTENT_LOG_BUFFER:
7535 			case DIRECTORY_NAME:
7536 			case DATEFORMAT:
7537 			case DELAYED_DURABILITY:
7538 			case AUTHORIZATION:
7539 			case TRANSFER:
7540 			case PROVIDER:
7541 			case SEARCH:
7542 			case MEMBER:
7543 			case OPENJSON:
7544 			case OPENROWSET:
7545 			case TRY_CAST:
7546 			case TRY_CONVERT:
7547 			case IDENTIFIER_:
7548 			case DELIMITED_IDENTIFIER_:
7549 			case STRING_:
7550 			case NUMBER_:
7551 			case HEX_DIGIT_:
7552 			case BIT_NUM_:
7553 			case NCHAR_TEXT:
7554 				{
7555 				setState(1554);
7556 				expr(0);
7557 				setState(1559);
7558 				_errHandler.sync(this);
7559 				_la = _input.LA(1);
7560 				while (_la==COMMA_) {
7561 					{
7562 					{
7563 					setState(1555);
7564 					match(COMMA_);
7565 					setState(1556);
7566 					expr(0);
7567 					}
7568 					}
7569 					setState(1561);
7570 					_errHandler.sync(this);
7571 					_la = _input.LA(1);
7572 				}
7573 				}
7574 				break;
7575 			case ASTERISK_:
7576 				{
7577 				setState(1562);
7578 				match(ASTERISK_);
7579 				}
7580 				break;
7581 			case RP_:
7582 				break;
7583 			default:
7584 				break;
7585 			}
7586 			setState(1565);
7587 			match(RP_);
7588 			}
7589 		}
7590 		catch (RecognitionException re) {
7591 			_localctx.exception = re;
7592 			_errHandler.reportError(this, re);
7593 			_errHandler.recover(this, re);
7594 		}
7595 		finally {
7596 			exitRule();
7597 		}
7598 		return _localctx;
7599 	}
7600 
7601 	public static class AggregationFunctionNameContext extends ParserRuleContext {
7602 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
7603 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
7604 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
7605 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
7606 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
7607 		public AggregationFunctionNameContext(ParserRuleContext parent, int invokingState) {
7608 			super(parent, invokingState);
7609 		}
7610 		@Override public int getRuleIndex() { return RULE_aggregationFunctionName; }
7611 		@Override
7612 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7613 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunctionName(this);
7614 			else return visitor.visitChildren(this);
7615 		}
7616 	}
7617 
7618 	public final AggregationFunctionNameContext aggregationFunctionName() throws RecognitionException {
7619 		AggregationFunctionNameContext _localctx = new AggregationFunctionNameContext(_ctx, getState());
7620 		enterRule(_localctx, 122, RULE_aggregationFunctionName);
7621 		int _la;
7622 		try {
7623 			enterOuterAlt(_localctx, 1);
7624 			{
7625 			setState(1567);
7626 			_la = _input.LA(1);
7627 			if ( !(((((_la - 149)) & ~0x3f) == 0 && ((1L << (_la - 149)) & ((1L << (MAX - 149)) | (1L << (MIN - 149)) | (1L << (SUM - 149)) | (1L << (COUNT - 149)) | (1L << (AVG - 149)))) != 0)) ) {
7628 			_errHandler.recoverInline(this);
7629 			}
7630 			else {
7631 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7632 				_errHandler.reportMatch(this);
7633 				consume();
7634 			}
7635 			}
7636 		}
7637 		catch (RecognitionException re) {
7638 			_localctx.exception = re;
7639 			_errHandler.reportError(this, re);
7640 			_errHandler.recover(this, re);
7641 		}
7642 		finally {
7643 			exitRule();
7644 		}
7645 		return _localctx;
7646 	}
7647 
7648 	public static class DistinctContext extends ParserRuleContext {
7649 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
7650 		public DistinctContext(ParserRuleContext parent, int invokingState) {
7651 			super(parent, invokingState);
7652 		}
7653 		@Override public int getRuleIndex() { return RULE_distinct; }
7654 		@Override
7655 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7656 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinct(this);
7657 			else return visitor.visitChildren(this);
7658 		}
7659 	}
7660 
7661 	public final DistinctContext distinct() throws RecognitionException {
7662 		DistinctContext _localctx = new DistinctContext(_ctx, getState());
7663 		enterRule(_localctx, 124, RULE_distinct);
7664 		try {
7665 			enterOuterAlt(_localctx, 1);
7666 			{
7667 			setState(1569);
7668 			match(DISTINCT);
7669 			}
7670 		}
7671 		catch (RecognitionException re) {
7672 			_localctx.exception = re;
7673 			_errHandler.reportError(this, re);
7674 			_errHandler.recover(this, re);
7675 		}
7676 		finally {
7677 			exitRule();
7678 		}
7679 		return _localctx;
7680 	}
7681 
7682 	public static class SpecialFunctionContext extends ParserRuleContext {
7683 		public ConversionFunctionContext conversionFunction() {
7684 			return getRuleContext(ConversionFunctionContext.class,0);
7685 		}
7686 		public CharFunctionContext charFunction() {
7687 			return getRuleContext(CharFunctionContext.class,0);
7688 		}
7689 		public OpenJsonFunctionContext openJsonFunction() {
7690 			return getRuleContext(OpenJsonFunctionContext.class,0);
7691 		}
7692 		public JsonFunctionContext jsonFunction() {
7693 			return getRuleContext(JsonFunctionContext.class,0);
7694 		}
7695 		public OpenRowSetFunctionContext openRowSetFunction() {
7696 			return getRuleContext(OpenRowSetFunctionContext.class,0);
7697 		}
7698 		public WindowFunctionContext windowFunction() {
7699 			return getRuleContext(WindowFunctionContext.class,0);
7700 		}
7701 		public ApproxFunctionContext approxFunction() {
7702 			return getRuleContext(ApproxFunctionContext.class,0);
7703 		}
7704 		public SpecialFunctionContext(ParserRuleContext parent, int invokingState) {
7705 			super(parent, invokingState);
7706 		}
7707 		@Override public int getRuleIndex() { return RULE_specialFunction; }
7708 		@Override
7709 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7710 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSpecialFunction(this);
7711 			else return visitor.visitChildren(this);
7712 		}
7713 	}
7714 
7715 	public final SpecialFunctionContext specialFunction() throws RecognitionException {
7716 		SpecialFunctionContext _localctx = new SpecialFunctionContext(_ctx, getState());
7717 		enterRule(_localctx, 126, RULE_specialFunction);
7718 		try {
7719 			setState(1578);
7720 			_errHandler.sync(this);
7721 			switch (_input.LA(1)) {
7722 			case CAST:
7723 			case CONVERT:
7724 			case TRY_CAST:
7725 			case TRY_CONVERT:
7726 				enterOuterAlt(_localctx, 1);
7727 				{
7728 				setState(1571);
7729 				conversionFunction();
7730 				}
7731 				break;
7732 			case CHAR:
7733 				enterOuterAlt(_localctx, 2);
7734 				{
7735 				setState(1572);
7736 				charFunction();
7737 				}
7738 				break;
7739 			case OPENJSON:
7740 				enterOuterAlt(_localctx, 3);
7741 				{
7742 				setState(1573);
7743 				openJsonFunction();
7744 				}
7745 				break;
7746 			case JSON_OBJECT:
7747 			case JSON_ARRAY:
7748 				enterOuterAlt(_localctx, 4);
7749 				{
7750 				setState(1574);
7751 				jsonFunction();
7752 				}
7753 				break;
7754 			case OPENROWSET:
7755 				enterOuterAlt(_localctx, 5);
7756 				{
7757 				setState(1575);
7758 				openRowSetFunction();
7759 				}
7760 				break;
7761 			case FIRST_VALUE:
7762 			case LAST_VALUE:
7763 				enterOuterAlt(_localctx, 6);
7764 				{
7765 				setState(1576);
7766 				windowFunction();
7767 				}
7768 				break;
7769 			case APPROX_PERCENTILE_CONT:
7770 			case APPROX_PERCENTILE_DISC:
7771 				enterOuterAlt(_localctx, 7);
7772 				{
7773 				setState(1577);
7774 				approxFunction();
7775 				}
7776 				break;
7777 			default:
7778 				throw new NoViableAltException(this);
7779 			}
7780 		}
7781 		catch (RecognitionException re) {
7782 			_localctx.exception = re;
7783 			_errHandler.reportError(this, re);
7784 			_errHandler.recover(this, re);
7785 		}
7786 		finally {
7787 			exitRule();
7788 		}
7789 		return _localctx;
7790 	}
7791 
7792 	public static class ApproxFunctionContext extends ParserRuleContext {
7793 		public Token funcName;
7794 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
7795 		public TerminalNode LP_(int i) {
7796 			return getToken(SQLServerStatementParser.LP_, i);
7797 		}
7798 		public List<ExprContext> expr() {
7799 			return getRuleContexts(ExprContext.class);
7800 		}
7801 		public ExprContext expr(int i) {
7802 			return getRuleContext(ExprContext.class,i);
7803 		}
7804 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
7805 		public TerminalNode RP_(int i) {
7806 			return getToken(SQLServerStatementParser.RP_, i);
7807 		}
7808 		public TerminalNode WITHIN() { return getToken(SQLServerStatementParser.WITHIN, 0); }
7809 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
7810 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
7811 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
7812 		public TerminalNode APPROX_PERCENTILE_CONT() { return getToken(SQLServerStatementParser.APPROX_PERCENTILE_CONT, 0); }
7813 		public TerminalNode APPROX_PERCENTILE_DISC() { return getToken(SQLServerStatementParser.APPROX_PERCENTILE_DISC, 0); }
7814 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
7815 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
7816 		public ApproxFunctionContext(ParserRuleContext parent, int invokingState) {
7817 			super(parent, invokingState);
7818 		}
7819 		@Override public int getRuleIndex() { return RULE_approxFunction; }
7820 		@Override
7821 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7822 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApproxFunction(this);
7823 			else return visitor.visitChildren(this);
7824 		}
7825 	}
7826 
7827 	public final ApproxFunctionContext approxFunction() throws RecognitionException {
7828 		ApproxFunctionContext _localctx = new ApproxFunctionContext(_ctx, getState());
7829 		enterRule(_localctx, 128, RULE_approxFunction);
7830 		int _la;
7831 		try {
7832 			enterOuterAlt(_localctx, 1);
7833 			{
7834 			setState(1580);
7835 			((ApproxFunctionContext)_localctx).funcName = _input.LT(1);
7836 			_la = _input.LA(1);
7837 			if ( !(_la==APPROX_PERCENTILE_CONT || _la==APPROX_PERCENTILE_DISC) ) {
7838 				((ApproxFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
7839 			}
7840 			else {
7841 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7842 				_errHandler.reportMatch(this);
7843 				consume();
7844 			}
7845 			setState(1581);
7846 			match(LP_);
7847 			setState(1582);
7848 			expr(0);
7849 			setState(1583);
7850 			match(RP_);
7851 			setState(1584);
7852 			match(WITHIN);
7853 			setState(1585);
7854 			match(GROUP);
7855 			setState(1586);
7856 			match(LP_);
7857 			setState(1587);
7858 			match(ORDER);
7859 			setState(1588);
7860 			match(BY);
7861 			setState(1589);
7862 			expr(0);
7863 			setState(1591);
7864 			_errHandler.sync(this);
7865 			_la = _input.LA(1);
7866 			if (_la==ASC || _la==DESC) {
7867 				{
7868 				setState(1590);
7869 				_la = _input.LA(1);
7870 				if ( !(_la==ASC || _la==DESC) ) {
7871 				_errHandler.recoverInline(this);
7872 				}
7873 				else {
7874 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7875 					_errHandler.reportMatch(this);
7876 					consume();
7877 				}
7878 				}
7879 			}
7880 
7881 			setState(1593);
7882 			match(RP_);
7883 			}
7884 		}
7885 		catch (RecognitionException re) {
7886 			_localctx.exception = re;
7887 			_errHandler.reportError(this, re);
7888 			_errHandler.recover(this, re);
7889 		}
7890 		finally {
7891 			exitRule();
7892 		}
7893 		return _localctx;
7894 	}
7895 
7896 	public static class ConversionFunctionContext extends ParserRuleContext {
7897 		public CastFunctionContext castFunction() {
7898 			return getRuleContext(CastFunctionContext.class,0);
7899 		}
7900 		public ConvertFunctionContext convertFunction() {
7901 			return getRuleContext(ConvertFunctionContext.class,0);
7902 		}
7903 		public ConversionFunctionContext(ParserRuleContext parent, int invokingState) {
7904 			super(parent, invokingState);
7905 		}
7906 		@Override public int getRuleIndex() { return RULE_conversionFunction; }
7907 		@Override
7908 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7909 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConversionFunction(this);
7910 			else return visitor.visitChildren(this);
7911 		}
7912 	}
7913 
7914 	public final ConversionFunctionContext conversionFunction() throws RecognitionException {
7915 		ConversionFunctionContext _localctx = new ConversionFunctionContext(_ctx, getState());
7916 		enterRule(_localctx, 130, RULE_conversionFunction);
7917 		try {
7918 			setState(1597);
7919 			_errHandler.sync(this);
7920 			switch (_input.LA(1)) {
7921 			case CAST:
7922 			case TRY_CAST:
7923 				enterOuterAlt(_localctx, 1);
7924 				{
7925 				setState(1595);
7926 				castFunction();
7927 				}
7928 				break;
7929 			case CONVERT:
7930 			case TRY_CONVERT:
7931 				enterOuterAlt(_localctx, 2);
7932 				{
7933 				setState(1596);
7934 				convertFunction();
7935 				}
7936 				break;
7937 			default:
7938 				throw new NoViableAltException(this);
7939 			}
7940 		}
7941 		catch (RecognitionException re) {
7942 			_localctx.exception = re;
7943 			_errHandler.reportError(this, re);
7944 			_errHandler.recover(this, re);
7945 		}
7946 		finally {
7947 			exitRule();
7948 		}
7949 		return _localctx;
7950 	}
7951 
7952 	public static class CastFunctionContext extends ParserRuleContext {
7953 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7954 		public ExprContext expr() {
7955 			return getRuleContext(ExprContext.class,0);
7956 		}
7957 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
7958 		public DataTypeContext dataType() {
7959 			return getRuleContext(DataTypeContext.class,0);
7960 		}
7961 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7962 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
7963 		public TerminalNode TRY_CAST() { return getToken(SQLServerStatementParser.TRY_CAST, 0); }
7964 		public CastFunctionContext(ParserRuleContext parent, int invokingState) {
7965 			super(parent, invokingState);
7966 		}
7967 		@Override public int getRuleIndex() { return RULE_castFunction; }
7968 		@Override
7969 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7970 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastFunction(this);
7971 			else return visitor.visitChildren(this);
7972 		}
7973 	}
7974 
7975 	public final CastFunctionContext castFunction() throws RecognitionException {
7976 		CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
7977 		enterRule(_localctx, 132, RULE_castFunction);
7978 		int _la;
7979 		try {
7980 			enterOuterAlt(_localctx, 1);
7981 			{
7982 			setState(1599);
7983 			_la = _input.LA(1);
7984 			if ( !(_la==CAST || _la==TRY_CAST) ) {
7985 			_errHandler.recoverInline(this);
7986 			}
7987 			else {
7988 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7989 				_errHandler.reportMatch(this);
7990 				consume();
7991 			}
7992 			setState(1600);
7993 			match(LP_);
7994 			setState(1601);
7995 			expr(0);
7996 			setState(1602);
7997 			match(AS);
7998 			setState(1603);
7999 			dataType();
8000 			setState(1604);
8001 			match(RP_);
8002 			}
8003 		}
8004 		catch (RecognitionException re) {
8005 			_localctx.exception = re;
8006 			_errHandler.reportError(this, re);
8007 			_errHandler.recover(this, re);
8008 		}
8009 		finally {
8010 			exitRule();
8011 		}
8012 		return _localctx;
8013 	}
8014 
8015 	public static class ConvertFunctionContext extends ParserRuleContext {
8016 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8017 		public DataTypeContext dataType() {
8018 			return getRuleContext(DataTypeContext.class,0);
8019 		}
8020 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8021 		public TerminalNode COMMA_(int i) {
8022 			return getToken(SQLServerStatementParser.COMMA_, i);
8023 		}
8024 		public ExprContext expr() {
8025 			return getRuleContext(ExprContext.class,0);
8026 		}
8027 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8028 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
8029 		public TerminalNode TRY_CONVERT() { return getToken(SQLServerStatementParser.TRY_CONVERT, 0); }
8030 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
8031 		public ConvertFunctionContext(ParserRuleContext parent, int invokingState) {
8032 			super(parent, invokingState);
8033 		}
8034 		@Override public int getRuleIndex() { return RULE_convertFunction; }
8035 		@Override
8036 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8037 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertFunction(this);
8038 			else return visitor.visitChildren(this);
8039 		}
8040 	}
8041 
8042 	public final ConvertFunctionContext convertFunction() throws RecognitionException {
8043 		ConvertFunctionContext _localctx = new ConvertFunctionContext(_ctx, getState());
8044 		enterRule(_localctx, 134, RULE_convertFunction);
8045 		int _la;
8046 		try {
8047 			enterOuterAlt(_localctx, 1);
8048 			{
8049 			setState(1606);
8050 			_la = _input.LA(1);
8051 			if ( !(_la==CONVERT || _la==TRY_CONVERT) ) {
8052 			_errHandler.recoverInline(this);
8053 			}
8054 			else {
8055 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8056 				_errHandler.reportMatch(this);
8057 				consume();
8058 			}
8059 			setState(1607);
8060 			match(LP_);
8061 			setState(1608);
8062 			dataType();
8063 			setState(1609);
8064 			match(COMMA_);
8065 			setState(1610);
8066 			expr(0);
8067 			setState(1613);
8068 			_errHandler.sync(this);
8069 			_la = _input.LA(1);
8070 			if (_la==COMMA_) {
8071 				{
8072 				setState(1611);
8073 				match(COMMA_);
8074 				setState(1612);
8075 				match(NUMBER_);
8076 				}
8077 			}
8078 
8079 			setState(1615);
8080 			match(RP_);
8081 			}
8082 		}
8083 		catch (RecognitionException re) {
8084 			_localctx.exception = re;
8085 			_errHandler.reportError(this, re);
8086 			_errHandler.recover(this, re);
8087 		}
8088 		finally {
8089 			exitRule();
8090 		}
8091 		return _localctx;
8092 	}
8093 
8094 	public static class JsonFunctionContext extends ParserRuleContext {
8095 		public JsonObjectFunctionContext jsonObjectFunction() {
8096 			return getRuleContext(JsonObjectFunctionContext.class,0);
8097 		}
8098 		public JsonArrayFunctionContext jsonArrayFunction() {
8099 			return getRuleContext(JsonArrayFunctionContext.class,0);
8100 		}
8101 		public JsonFunctionContext(ParserRuleContext parent, int invokingState) {
8102 			super(parent, invokingState);
8103 		}
8104 		@Override public int getRuleIndex() { return RULE_jsonFunction; }
8105 		@Override
8106 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8107 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonFunction(this);
8108 			else return visitor.visitChildren(this);
8109 		}
8110 	}
8111 
8112 	public final JsonFunctionContext jsonFunction() throws RecognitionException {
8113 		JsonFunctionContext _localctx = new JsonFunctionContext(_ctx, getState());
8114 		enterRule(_localctx, 136, RULE_jsonFunction);
8115 		try {
8116 			setState(1619);
8117 			_errHandler.sync(this);
8118 			switch (_input.LA(1)) {
8119 			case JSON_OBJECT:
8120 				enterOuterAlt(_localctx, 1);
8121 				{
8122 				setState(1617);
8123 				jsonObjectFunction();
8124 				}
8125 				break;
8126 			case JSON_ARRAY:
8127 				enterOuterAlt(_localctx, 2);
8128 				{
8129 				setState(1618);
8130 				jsonArrayFunction();
8131 				}
8132 				break;
8133 			default:
8134 				throw new NoViableAltException(this);
8135 			}
8136 		}
8137 		catch (RecognitionException re) {
8138 			_localctx.exception = re;
8139 			_errHandler.reportError(this, re);
8140 			_errHandler.recover(this, re);
8141 		}
8142 		finally {
8143 			exitRule();
8144 		}
8145 		return _localctx;
8146 	}
8147 
8148 	public static class JsonObjectFunctionContext extends ParserRuleContext {
8149 		public TerminalNode JSON_OBJECT() { return getToken(SQLServerStatementParser.JSON_OBJECT, 0); }
8150 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8151 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8152 		public List<JsonKeyValueContext> jsonKeyValue() {
8153 			return getRuleContexts(JsonKeyValueContext.class);
8154 		}
8155 		public JsonKeyValueContext jsonKeyValue(int i) {
8156 			return getRuleContext(JsonKeyValueContext.class,i);
8157 		}
8158 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8159 		public TerminalNode COMMA_(int i) {
8160 			return getToken(SQLServerStatementParser.COMMA_, i);
8161 		}
8162 		public JsonNullClauseContext jsonNullClause() {
8163 			return getRuleContext(JsonNullClauseContext.class,0);
8164 		}
8165 		public JsonObjectFunctionContext(ParserRuleContext parent, int invokingState) {
8166 			super(parent, invokingState);
8167 		}
8168 		@Override public int getRuleIndex() { return RULE_jsonObjectFunction; }
8169 		@Override
8170 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8171 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonObjectFunction(this);
8172 			else return visitor.visitChildren(this);
8173 		}
8174 	}
8175 
8176 	public final JsonObjectFunctionContext jsonObjectFunction() throws RecognitionException {
8177 		JsonObjectFunctionContext _localctx = new JsonObjectFunctionContext(_ctx, getState());
8178 		enterRule(_localctx, 138, RULE_jsonObjectFunction);
8179 		int _la;
8180 		try {
8181 			enterOuterAlt(_localctx, 1);
8182 			{
8183 			setState(1621);
8184 			match(JSON_OBJECT);
8185 			setState(1622);
8186 			match(LP_);
8187 			setState(1634);
8188 			_errHandler.sync(this);
8189 			_la = _input.LA(1);
8190 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NOT - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (JSON_OBJECT - 203)) | (1L << (JSON_ARRAY - 203)) | (1L << (FIRST_VALUE - 203)) | (1L << (LAST_VALUE - 203)) | (1L << (APPROX_PERCENTILE_CONT - 203)) | (1L << (APPROX_PERCENTILE_DISC - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (CONVERT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (CONTROL - 331)) | (1L << (CONCAT - 331)) | (1L << (TAKE - 331)) | (1L << (OWNERSHIP - 331)) | (1L << (DEFINITION - 331)) | (1L << (APPLICATION - 331)) | (1L << (ASSEMBLY - 331)) | (1L << (SYMMETRIC - 331)) | (1L << (ASYMMETRIC - 331)) | (1L << (SERVER - 331)) | (1L << (RECEIVE - 331)) | (1L << (CHANGE - 331)) | (1L << (TRACE - 331)) | (1L << (TRACKING - 331)) | (1L << (RESOURCES - 331)) | (1L << (SETTINGS - 331)) | (1L << (STATE - 331)) | (1L << (AVAILABILITY - 331)) | (1L << (CREDENTIAL - 331)) | (1L << (ENDPOINT - 331)) | (1L << (EVENT - 331)) | (1L << (NOTIFICATION - 331)) | (1L << (LINKED - 331)) | (1L << (AUDIT - 331)) | (1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (KILL - 395)) | (1L << (BACKUP - 395)) | (1L << (LOG - 395)) | (1L << (SHOWPLAN - 395)) | (1L << (SUBSCRIBE - 395)) | (1L << (QUERY - 395)) | (1L << (NOTIFICATIONS - 395)) | (1L << (CHECKPOINT - 395)) | (1L << (SEQUENCE - 395)) | (1L << (ABORT_AFTER_WAIT - 395)) | (1L << (ALLOW_PAGE_LOCKS - 395)) | (1L << (ALLOW_ROW_LOCKS - 395)) | (1L << (ALL_SPARSE_COLUMNS - 395)) | (1L << (BUCKET_COUNT - 395)) | (1L << (COLUMNSTORE_ARCHIVE - 395)) | (1L << (COLUMN_ENCRYPTION_KEY - 395)) | (1L << (COLUMN_SET - 395)) | (1L << (COMPRESSION_DELAY - 395)) | (1L << (DATABASE_DEAULT - 395)) | (1L << (DATA_COMPRESSION - 395)) | (1L << (DATA_CONSISTENCY_CHECK - 395)) | (1L << (ENCRYPTION_TYPE - 395)) | (1L << (SYSTEM_TIME - 395)) | (1L << (SYSTEM_VERSIONING - 395)) | (1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)))) != 0) || ((((_la - 465)) & ~0x3f) == 0 && ((1L << (_la - 465)) & ((1L << (OUTPUT - 465)) | (1L << (INSERTED - 465)) | (1L << (DELETED - 465)) | (1L << (FILENAME - 465)) | (1L << (SIZE - 465)) | (1L << (MAXSIZE - 465)) | (1L << (FILEGROWTH - 465)) | (1L << (UNLIMITED - 465)) | (1L << (KB - 465)) | (1L << (MB - 465)) | (1L << (GB - 465)) | (1L << (TB - 465)) | (1L << (CONTAINS - 465)) | (1L << (MEMORY_OPTIMIZED_DATA - 465)) | (1L << (FILEGROUP - 465)) | (1L << (NON_TRANSACTED_ACCESS - 465)) | (1L << (DB_CHAINING - 465)) | (1L << (TRUSTWORTHY - 465)) | (1L << (FORWARD_ONLY - 465)) | (1L << (KEYSET - 465)) | (1L << (FAST_FORWARD - 465)) | (1L << (SCROLL_LOCKS - 465)) | (1L << (OPTIMISTIC - 465)) | (1L << (TYPE_WARNING - 465)) | (1L << (SCHEMABINDING - 465)))) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & ((1L << (CALLER - 529)) | (1L << (INPUT - 529)) | (1L << (OWNER - 529)) | (1L << (SNAPSHOT - 529)) | (1L << (REPEATABLE - 529)) | (1L << (SERIALIZABLE - 529)) | (1L << (NATIVE_COMPILATION - 529)) | (1L << (VIEW_METADATA - 529)) | (1L << (INSTEAD - 529)) | (1L << (APPEND - 529)) | (1L << (INCREMENT - 529)) | (1L << (CACHE - 529)) | (1L << (MINVALUE - 529)) | (1L << (MAXVALUE - 529)) | (1L << (RESTART - 529)) | (1L << (LOB_COMPACTION - 529)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 529)) | (1L << (REORGANIZE - 529)) | (1L << (RESUME - 529)) | (1L << (PAUSE - 529)) | (1L << (ABORT - 529)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 529)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 529)) | (1L << (IMMEDIATE - 529)) | (1L << (NO_WAIT - 529)) | (1L << (TARGET_RECOVERY_TIME - 529)) | (1L << (SECONDS - 529)) | (1L << (HONOR_BROKER_PRIORITY - 529)) | (1L << (ERROR_BROKER_CONVERSATIONS - 529)) | (1L << (NEW_BROKER - 529)) | (1L << (DISABLE_BROKER - 529)) | (1L << (ENABLE_BROKER - 529)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 529)) | (1L << (READ_COMMITTED_SNAPSHOT - 529)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 529)) | (1L << (RECURSIVE_TRIGGERS - 529)) | (1L << (QUOTED_IDENTIFIER - 529)) | (1L << (NUMERIC_ROUNDABORT - 529)) | (1L << (CONCAT_NULL_YIELDS_NULL - 529)) | (1L << (COMPATIBILITY_LEVEL - 529)) | (1L << (ARITHABORT - 529)) | (1L << (ANSI_WARNINGS - 529)) | (1L << (ANSI_PADDING - 529)) | (1L << (ANSI_NULLS - 529)))) != 0) || ((((_la - 593)) & ~0x3f) == 0 && ((1L << (_la - 593)) & ((1L << (ANSI_NULL_DEFAULT - 593)) | (1L << (PAGE_VERIFY - 593)) | (1L << (CHECKSUM - 593)) | (1L << (TORN_PAGE_DETECTION - 593)) | (1L << (BULK_LOGGED - 593)) | (1L << (RECOVERY - 593)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 593)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 593)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 593)) | (1L << (EXECUTION_COUNT - 593)) | (1L << (QUERY_CAPTURE_POLICY - 593)) | (1L << (WAIT_STATS_CAPTURE_MODE - 593)) | (1L << (MAX_PLANS_PER_QUERY - 593)) | (1L << (QUERY_CAPTURE_MODE - 593)) | (1L << (SIZE_BASED_CLEANUP_MODE - 593)) | (1L << (INTERVAL_LENGTH_MINUTES - 593)) | (1L << (MAX_STORAGE_SIZE_MB - 593)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 593)) | (1L << (CLEANUP_POLICY - 593)) | (1L << (CUSTOM - 593)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 593)) | (1L << (OPERATION_MODE - 593)) | (1L << (QUERY_STORE - 593)) | (1L << (CURSOR_DEFAULT - 593)) | (1L << (GLOBAL - 593)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 593)) | (1L << (HOURS - 593)) | (1L << (CHANGE_RETENTION - 593)) | (1L << (AUTO_CLEANUP - 593)) | (1L << (CHANGE_TRACKING - 593)) | (1L << (AUTOMATIC_TUNING - 593)) | (1L << (FORCE_LAST_GOOD_PLAN - 593)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 593)) | (1L << (AUTO_UPDATE_STATISTICS - 593)) | (1L << (AUTO_SHRINK - 593)) | (1L << (AUTO_CREATE_STATISTICS - 593)) | (1L << (INCREMENTAL - 593)) | (1L << (AUTO_CLOSE - 593)) | (1L << (DATA_RETENTION - 593)) | (1L << (TEMPORAL_HISTORY_RETENTION - 593)) | (1L << (EDITION - 593)) | (1L << (MIXED_PAGE_ALLOCATION - 593)) | (1L << (DISABLED - 593)) | (1L << (ALLOWED - 593)) | (1L << (HADR - 593)) | (1L << (MULTI_USER - 593)) | (1L << (RESTRICTED_USER - 593)) | (1L << (SINGLE_USER - 593)) | (1L << (OFFLINE - 593)) | (1L << (EMERGENCY - 593)) | (1L << (SUSPEND - 593)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 593)) | (1L << (ELASTIC_POOL - 593)) | (1L << (SERVICE_OBJECTIVE - 593)) | (1L << (DATABASE_NAME - 593)) | (1L << (ALLOW_CONNECTIONS - 593)) | (1L << (GEO - 593)) | (1L << (NAMED - 593)) | (1L << (DATEFIRST - 593)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 593)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 593)) | (1L << (SECONDARY - 593)) | (1L << (FAILOVER - 593)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 593)))) != 0) || ((((_la - 657)) & ~0x3f) == 0 && ((1L << (_la - 657)) & ((1L << (DEFAULT_LANGUAGE - 657)) | (1L << (INLINE - 657)) | (1L << (NESTED_TRIGGERS - 657)) | (1L << (TRANSFORM_NOISE_WORDS - 657)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 657)) | (1L << (PERSISTENT_LOG_BUFFER - 657)) | (1L << (DIRECTORY_NAME - 657)) | (1L << (DATEFORMAT - 657)) | (1L << (DELAYED_DURABILITY - 657)) | (1L << (AUTHORIZATION - 657)) | (1L << (TRANSFER - 657)) | (1L << (PROVIDER - 657)) | (1L << (SEARCH - 657)) | (1L << (MEMBER - 657)) | (1L << (OPENJSON - 657)) | (1L << (OPENROWSET - 657)) | (1L << (TRY_CAST - 657)) | (1L << (TRY_CONVERT - 657)))) != 0) || ((((_la - 721)) & ~0x3f) == 0 && ((1L << (_la - 721)) & ((1L << (IDENTIFIER_ - 721)) | (1L << (DELIMITED_IDENTIFIER_ - 721)) | (1L << (STRING_ - 721)) | (1L << (NUMBER_ - 721)) | (1L << (HEX_DIGIT_ - 721)) | (1L << (BIT_NUM_ - 721)) | (1L << (NCHAR_TEXT - 721)))) != 0)) {
8191 				{
8192 				setState(1623);
8193 				jsonKeyValue();
8194 				setState(1628);
8195 				_errHandler.sync(this);
8196 				_la = _input.LA(1);
8197 				while (_la==COMMA_) {
8198 					{
8199 					{
8200 					setState(1624);
8201 					match(COMMA_);
8202 					setState(1625);
8203 					jsonKeyValue();
8204 					}
8205 					}
8206 					setState(1630);
8207 					_errHandler.sync(this);
8208 					_la = _input.LA(1);
8209 				}
8210 				setState(1632);
8211 				_errHandler.sync(this);
8212 				_la = _input.LA(1);
8213 				if (_la==NULL || _la==ABSENT) {
8214 					{
8215 					setState(1631);
8216 					jsonNullClause();
8217 					}
8218 				}
8219 
8220 				}
8221 			}
8222 
8223 			setState(1636);
8224 			match(RP_);
8225 			}
8226 		}
8227 		catch (RecognitionException re) {
8228 			_localctx.exception = re;
8229 			_errHandler.reportError(this, re);
8230 			_errHandler.recover(this, re);
8231 		}
8232 		finally {
8233 			exitRule();
8234 		}
8235 		return _localctx;
8236 	}
8237 
8238 	public static class JsonArrayFunctionContext extends ParserRuleContext {
8239 		public TerminalNode JSON_ARRAY() { return getToken(SQLServerStatementParser.JSON_ARRAY, 0); }
8240 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8241 		public List<ExprContext> expr() {
8242 			return getRuleContexts(ExprContext.class);
8243 		}
8244 		public ExprContext expr(int i) {
8245 			return getRuleContext(ExprContext.class,i);
8246 		}
8247 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8248 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8249 		public TerminalNode COMMA_(int i) {
8250 			return getToken(SQLServerStatementParser.COMMA_, i);
8251 		}
8252 		public JsonNullClauseContext jsonNullClause() {
8253 			return getRuleContext(JsonNullClauseContext.class,0);
8254 		}
8255 		public JsonArrayFunctionContext(ParserRuleContext parent, int invokingState) {
8256 			super(parent, invokingState);
8257 		}
8258 		@Override public int getRuleIndex() { return RULE_jsonArrayFunction; }
8259 		@Override
8260 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8261 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonArrayFunction(this);
8262 			else return visitor.visitChildren(this);
8263 		}
8264 	}
8265 
8266 	public final JsonArrayFunctionContext jsonArrayFunction() throws RecognitionException {
8267 		JsonArrayFunctionContext _localctx = new JsonArrayFunctionContext(_ctx, getState());
8268 		enterRule(_localctx, 140, RULE_jsonArrayFunction);
8269 		int _la;
8270 		try {
8271 			enterOuterAlt(_localctx, 1);
8272 			{
8273 			setState(1638);
8274 			match(JSON_ARRAY);
8275 			setState(1639);
8276 			match(LP_);
8277 			setState(1640);
8278 			expr(0);
8279 			setState(1645);
8280 			_errHandler.sync(this);
8281 			_la = _input.LA(1);
8282 			while (_la==COMMA_) {
8283 				{
8284 				{
8285 				setState(1641);
8286 				match(COMMA_);
8287 				setState(1642);
8288 				expr(0);
8289 				}
8290 				}
8291 				setState(1647);
8292 				_errHandler.sync(this);
8293 				_la = _input.LA(1);
8294 			}
8295 			setState(1649);
8296 			_errHandler.sync(this);
8297 			_la = _input.LA(1);
8298 			if (_la==NULL || _la==ABSENT) {
8299 				{
8300 				setState(1648);
8301 				jsonNullClause();
8302 				}
8303 			}
8304 
8305 			setState(1651);
8306 			match(RP_);
8307 			}
8308 		}
8309 		catch (RecognitionException re) {
8310 			_localctx.exception = re;
8311 			_errHandler.reportError(this, re);
8312 			_errHandler.recover(this, re);
8313 		}
8314 		finally {
8315 			exitRule();
8316 		}
8317 		return _localctx;
8318 	}
8319 
8320 	public static class JsonKeyValueContext extends ParserRuleContext {
8321 		public List<ExprContext> expr() {
8322 			return getRuleContexts(ExprContext.class);
8323 		}
8324 		public ExprContext expr(int i) {
8325 			return getRuleContext(ExprContext.class,i);
8326 		}
8327 		public TerminalNode COLON_() { return getToken(SQLServerStatementParser.COLON_, 0); }
8328 		public JsonKeyValueContext(ParserRuleContext parent, int invokingState) {
8329 			super(parent, invokingState);
8330 		}
8331 		@Override public int getRuleIndex() { return RULE_jsonKeyValue; }
8332 		@Override
8333 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8334 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonKeyValue(this);
8335 			else return visitor.visitChildren(this);
8336 		}
8337 	}
8338 
8339 	public final JsonKeyValueContext jsonKeyValue() throws RecognitionException {
8340 		JsonKeyValueContext _localctx = new JsonKeyValueContext(_ctx, getState());
8341 		enterRule(_localctx, 142, RULE_jsonKeyValue);
8342 		try {
8343 			enterOuterAlt(_localctx, 1);
8344 			{
8345 			setState(1653);
8346 			expr(0);
8347 			setState(1654);
8348 			match(COLON_);
8349 			setState(1655);
8350 			expr(0);
8351 			}
8352 		}
8353 		catch (RecognitionException re) {
8354 			_localctx.exception = re;
8355 			_errHandler.reportError(this, re);
8356 			_errHandler.recover(this, re);
8357 		}
8358 		finally {
8359 			exitRule();
8360 		}
8361 		return _localctx;
8362 	}
8363 
8364 	public static class JsonNullClauseContext extends ParserRuleContext {
8365 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
8366 		public TerminalNode NULL(int i) {
8367 			return getToken(SQLServerStatementParser.NULL, i);
8368 		}
8369 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
8370 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
8371 		public JsonNullClauseContext(ParserRuleContext parent, int invokingState) {
8372 			super(parent, invokingState);
8373 		}
8374 		@Override public int getRuleIndex() { return RULE_jsonNullClause; }
8375 		@Override
8376 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8377 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonNullClause(this);
8378 			else return visitor.visitChildren(this);
8379 		}
8380 	}
8381 
8382 	public final JsonNullClauseContext jsonNullClause() throws RecognitionException {
8383 		JsonNullClauseContext _localctx = new JsonNullClauseContext(_ctx, getState());
8384 		enterRule(_localctx, 144, RULE_jsonNullClause);
8385 		try {
8386 			setState(1663);
8387 			_errHandler.sync(this);
8388 			switch (_input.LA(1)) {
8389 			case NULL:
8390 				enterOuterAlt(_localctx, 1);
8391 				{
8392 				setState(1657);
8393 				match(NULL);
8394 				setState(1658);
8395 				match(ON);
8396 				setState(1659);
8397 				match(NULL);
8398 				}
8399 				break;
8400 			case ABSENT:
8401 				enterOuterAlt(_localctx, 2);
8402 				{
8403 				setState(1660);
8404 				match(ABSENT);
8405 				setState(1661);
8406 				match(ON);
8407 				setState(1662);
8408 				match(NULL);
8409 				}
8410 				break;
8411 			default:
8412 				throw new NoViableAltException(this);
8413 			}
8414 		}
8415 		catch (RecognitionException re) {
8416 			_localctx.exception = re;
8417 			_errHandler.reportError(this, re);
8418 			_errHandler.recover(this, re);
8419 		}
8420 		finally {
8421 			exitRule();
8422 		}
8423 		return _localctx;
8424 	}
8425 
8426 	public static class CharFunctionContext extends ParserRuleContext {
8427 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
8428 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8429 		public List<ExprContext> expr() {
8430 			return getRuleContexts(ExprContext.class);
8431 		}
8432 		public ExprContext expr(int i) {
8433 			return getRuleContext(ExprContext.class,i);
8434 		}
8435 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8436 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8437 		public TerminalNode COMMA_(int i) {
8438 			return getToken(SQLServerStatementParser.COMMA_, i);
8439 		}
8440 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
8441 		public IgnoredIdentifierContext ignoredIdentifier() {
8442 			return getRuleContext(IgnoredIdentifierContext.class,0);
8443 		}
8444 		public CharFunctionContext(ParserRuleContext parent, int invokingState) {
8445 			super(parent, invokingState);
8446 		}
8447 		@Override public int getRuleIndex() { return RULE_charFunction; }
8448 		@Override
8449 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8450 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCharFunction(this);
8451 			else return visitor.visitChildren(this);
8452 		}
8453 	}
8454 
8455 	public final CharFunctionContext charFunction() throws RecognitionException {
8456 		CharFunctionContext _localctx = new CharFunctionContext(_ctx, getState());
8457 		enterRule(_localctx, 146, RULE_charFunction);
8458 		int _la;
8459 		try {
8460 			enterOuterAlt(_localctx, 1);
8461 			{
8462 			setState(1665);
8463 			match(CHAR);
8464 			setState(1666);
8465 			match(LP_);
8466 			setState(1667);
8467 			expr(0);
8468 			setState(1672);
8469 			_errHandler.sync(this);
8470 			_la = _input.LA(1);
8471 			while (_la==COMMA_) {
8472 				{
8473 				{
8474 				setState(1668);
8475 				match(COMMA_);
8476 				setState(1669);
8477 				expr(0);
8478 				}
8479 				}
8480 				setState(1674);
8481 				_errHandler.sync(this);
8482 				_la = _input.LA(1);
8483 			}
8484 			setState(1677);
8485 			_errHandler.sync(this);
8486 			_la = _input.LA(1);
8487 			if (_la==USING) {
8488 				{
8489 				setState(1675);
8490 				match(USING);
8491 				setState(1676);
8492 				ignoredIdentifier();
8493 				}
8494 			}
8495 
8496 			setState(1679);
8497 			match(RP_);
8498 			}
8499 		}
8500 		catch (RecognitionException re) {
8501 			_localctx.exception = re;
8502 			_errHandler.reportError(this, re);
8503 			_errHandler.recover(this, re);
8504 		}
8505 		finally {
8506 			exitRule();
8507 		}
8508 		return _localctx;
8509 	}
8510 
8511 	public static class OpenJsonFunctionContext extends ParserRuleContext {
8512 		public TerminalNode OPENJSON() { return getToken(SQLServerStatementParser.OPENJSON, 0); }
8513 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8514 		public List<ExprContext> expr() {
8515 			return getRuleContexts(ExprContext.class);
8516 		}
8517 		public ExprContext expr(int i) {
8518 			return getRuleContext(ExprContext.class,i);
8519 		}
8520 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8521 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
8522 		public OpenJsonWithclauseContext openJsonWithclause() {
8523 			return getRuleContext(OpenJsonWithclauseContext.class,0);
8524 		}
8525 		public OpenJsonFunctionContext(ParserRuleContext parent, int invokingState) {
8526 			super(parent, invokingState);
8527 		}
8528 		@Override public int getRuleIndex() { return RULE_openJsonFunction; }
8529 		@Override
8530 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8531 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenJsonFunction(this);
8532 			else return visitor.visitChildren(this);
8533 		}
8534 	}
8535 
8536 	public final OpenJsonFunctionContext openJsonFunction() throws RecognitionException {
8537 		OpenJsonFunctionContext _localctx = new OpenJsonFunctionContext(_ctx, getState());
8538 		enterRule(_localctx, 148, RULE_openJsonFunction);
8539 		int _la;
8540 		try {
8541 			enterOuterAlt(_localctx, 1);
8542 			{
8543 			setState(1681);
8544 			match(OPENJSON);
8545 			setState(1682);
8546 			match(LP_);
8547 			setState(1683);
8548 			expr(0);
8549 			setState(1686);
8550 			_errHandler.sync(this);
8551 			_la = _input.LA(1);
8552 			if (_la==COMMA_) {
8553 				{
8554 				setState(1684);
8555 				match(COMMA_);
8556 				setState(1685);
8557 				expr(0);
8558 				}
8559 			}
8560 
8561 			setState(1688);
8562 			match(RP_);
8563 			setState(1690);
8564 			_errHandler.sync(this);
8565 			switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) {
8566 			case 1:
8567 				{
8568 				setState(1689);
8569 				openJsonWithclause();
8570 				}
8571 				break;
8572 			}
8573 			}
8574 		}
8575 		catch (RecognitionException re) {
8576 			_localctx.exception = re;
8577 			_errHandler.reportError(this, re);
8578 			_errHandler.recover(this, re);
8579 		}
8580 		finally {
8581 			exitRule();
8582 		}
8583 		return _localctx;
8584 	}
8585 
8586 	public static class OpenJsonWithclauseContext extends ParserRuleContext {
8587 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
8588 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8589 		public List<JsonColumnDefinitionContext> jsonColumnDefinition() {
8590 			return getRuleContexts(JsonColumnDefinitionContext.class);
8591 		}
8592 		public JsonColumnDefinitionContext jsonColumnDefinition(int i) {
8593 			return getRuleContext(JsonColumnDefinitionContext.class,i);
8594 		}
8595 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8596 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8597 		public TerminalNode COMMA_(int i) {
8598 			return getToken(SQLServerStatementParser.COMMA_, i);
8599 		}
8600 		public OpenJsonWithclauseContext(ParserRuleContext parent, int invokingState) {
8601 			super(parent, invokingState);
8602 		}
8603 		@Override public int getRuleIndex() { return RULE_openJsonWithclause; }
8604 		@Override
8605 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8606 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenJsonWithclause(this);
8607 			else return visitor.visitChildren(this);
8608 		}
8609 	}
8610 
8611 	public final OpenJsonWithclauseContext openJsonWithclause() throws RecognitionException {
8612 		OpenJsonWithclauseContext _localctx = new OpenJsonWithclauseContext(_ctx, getState());
8613 		enterRule(_localctx, 150, RULE_openJsonWithclause);
8614 		int _la;
8615 		try {
8616 			enterOuterAlt(_localctx, 1);
8617 			{
8618 			setState(1692);
8619 			match(WITH);
8620 			setState(1693);
8621 			match(LP_);
8622 			setState(1694);
8623 			jsonColumnDefinition();
8624 			setState(1699);
8625 			_errHandler.sync(this);
8626 			_la = _input.LA(1);
8627 			while (_la==COMMA_) {
8628 				{
8629 				{
8630 				setState(1695);
8631 				match(COMMA_);
8632 				setState(1696);
8633 				jsonColumnDefinition();
8634 				}
8635 				}
8636 				setState(1701);
8637 				_errHandler.sync(this);
8638 				_la = _input.LA(1);
8639 			}
8640 			setState(1702);
8641 			match(RP_);
8642 			}
8643 		}
8644 		catch (RecognitionException re) {
8645 			_localctx.exception = re;
8646 			_errHandler.reportError(this, re);
8647 			_errHandler.recover(this, re);
8648 		}
8649 		finally {
8650 			exitRule();
8651 		}
8652 		return _localctx;
8653 	}
8654 
8655 	public static class JsonColumnDefinitionContext extends ParserRuleContext {
8656 		public ColumnNameContext columnName() {
8657 			return getRuleContext(ColumnNameContext.class,0);
8658 		}
8659 		public DataTypeContext dataType() {
8660 			return getRuleContext(DataTypeContext.class,0);
8661 		}
8662 		public ExprContext expr() {
8663 			return getRuleContext(ExprContext.class,0);
8664 		}
8665 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
8666 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
8667 		public JsonColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
8668 			super(parent, invokingState);
8669 		}
8670 		@Override public int getRuleIndex() { return RULE_jsonColumnDefinition; }
8671 		@Override
8672 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8673 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonColumnDefinition(this);
8674 			else return visitor.visitChildren(this);
8675 		}
8676 	}
8677 
8678 	public final JsonColumnDefinitionContext jsonColumnDefinition() throws RecognitionException {
8679 		JsonColumnDefinitionContext _localctx = new JsonColumnDefinitionContext(_ctx, getState());
8680 		enterRule(_localctx, 152, RULE_jsonColumnDefinition);
8681 		int _la;
8682 		try {
8683 			enterOuterAlt(_localctx, 1);
8684 			{
8685 			setState(1704);
8686 			columnName();
8687 			setState(1705);
8688 			dataType();
8689 			setState(1707);
8690 			_errHandler.sync(this);
8691 			_la = _input.LA(1);
8692 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NOT - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (JSON_OBJECT - 203)) | (1L << (JSON_ARRAY - 203)) | (1L << (FIRST_VALUE - 203)) | (1L << (LAST_VALUE - 203)) | (1L << (APPROX_PERCENTILE_CONT - 203)) | (1L << (APPROX_PERCENTILE_DISC - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (CONVERT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (CONTROL - 331)) | (1L << (CONCAT - 331)) | (1L << (TAKE - 331)) | (1L << (OWNERSHIP - 331)) | (1L << (DEFINITION - 331)) | (1L << (APPLICATION - 331)) | (1L << (ASSEMBLY - 331)) | (1L << (SYMMETRIC - 331)) | (1L << (ASYMMETRIC - 331)) | (1L << (SERVER - 331)) | (1L << (RECEIVE - 331)) | (1L << (CHANGE - 331)) | (1L << (TRACE - 331)) | (1L << (TRACKING - 331)) | (1L << (RESOURCES - 331)) | (1L << (SETTINGS - 331)) | (1L << (STATE - 331)) | (1L << (AVAILABILITY - 331)) | (1L << (CREDENTIAL - 331)) | (1L << (ENDPOINT - 331)) | (1L << (EVENT - 331)) | (1L << (NOTIFICATION - 331)) | (1L << (LINKED - 331)) | (1L << (AUDIT - 331)) | (1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (KILL - 395)) | (1L << (BACKUP - 395)) | (1L << (LOG - 395)) | (1L << (SHOWPLAN - 395)) | (1L << (SUBSCRIBE - 395)) | (1L << (QUERY - 395)) | (1L << (NOTIFICATIONS - 395)) | (1L << (CHECKPOINT - 395)) | (1L << (SEQUENCE - 395)) | (1L << (ABORT_AFTER_WAIT - 395)) | (1L << (ALLOW_PAGE_LOCKS - 395)) | (1L << (ALLOW_ROW_LOCKS - 395)) | (1L << (ALL_SPARSE_COLUMNS - 395)) | (1L << (BUCKET_COUNT - 395)) | (1L << (COLUMNSTORE_ARCHIVE - 395)) | (1L << (COLUMN_ENCRYPTION_KEY - 395)) | (1L << (COLUMN_SET - 395)) | (1L << (COMPRESSION_DELAY - 395)) | (1L << (DATABASE_DEAULT - 395)) | (1L << (DATA_COMPRESSION - 395)) | (1L << (DATA_CONSISTENCY_CHECK - 395)) | (1L << (ENCRYPTION_TYPE - 395)) | (1L << (SYSTEM_TIME - 395)) | (1L << (SYSTEM_VERSIONING - 395)) | (1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)))) != 0) || ((((_la - 465)) & ~0x3f) == 0 && ((1L << (_la - 465)) & ((1L << (OUTPUT - 465)) | (1L << (INSERTED - 465)) | (1L << (DELETED - 465)) | (1L << (FILENAME - 465)) | (1L << (SIZE - 465)) | (1L << (MAXSIZE - 465)) | (1L << (FILEGROWTH - 465)) | (1L << (UNLIMITED - 465)) | (1L << (KB - 465)) | (1L << (MB - 465)) | (1L << (GB - 465)) | (1L << (TB - 465)) | (1L << (CONTAINS - 465)) | (1L << (MEMORY_OPTIMIZED_DATA - 465)) | (1L << (FILEGROUP - 465)) | (1L << (NON_TRANSACTED_ACCESS - 465)) | (1L << (DB_CHAINING - 465)) | (1L << (TRUSTWORTHY - 465)) | (1L << (FORWARD_ONLY - 465)) | (1L << (KEYSET - 465)) | (1L << (FAST_FORWARD - 465)) | (1L << (SCROLL_LOCKS - 465)) | (1L << (OPTIMISTIC - 465)) | (1L << (TYPE_WARNING - 465)) | (1L << (SCHEMABINDING - 465)))) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & ((1L << (CALLER - 529)) | (1L << (INPUT - 529)) | (1L << (OWNER - 529)) | (1L << (SNAPSHOT - 529)) | (1L << (REPEATABLE - 529)) | (1L << (SERIALIZABLE - 529)) | (1L << (NATIVE_COMPILATION - 529)) | (1L << (VIEW_METADATA - 529)) | (1L << (INSTEAD - 529)) | (1L << (APPEND - 529)) | (1L << (INCREMENT - 529)) | (1L << (CACHE - 529)) | (1L << (MINVALUE - 529)) | (1L << (MAXVALUE - 529)) | (1L << (RESTART - 529)) | (1L << (LOB_COMPACTION - 529)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 529)) | (1L << (REORGANIZE - 529)) | (1L << (RESUME - 529)) | (1L << (PAUSE - 529)) | (1L << (ABORT - 529)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 529)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 529)) | (1L << (IMMEDIATE - 529)) | (1L << (NO_WAIT - 529)) | (1L << (TARGET_RECOVERY_TIME - 529)) | (1L << (SECONDS - 529)) | (1L << (HONOR_BROKER_PRIORITY - 529)) | (1L << (ERROR_BROKER_CONVERSATIONS - 529)) | (1L << (NEW_BROKER - 529)) | (1L << (DISABLE_BROKER - 529)) | (1L << (ENABLE_BROKER - 529)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 529)) | (1L << (READ_COMMITTED_SNAPSHOT - 529)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 529)) | (1L << (RECURSIVE_TRIGGERS - 529)) | (1L << (QUOTED_IDENTIFIER - 529)) | (1L << (NUMERIC_ROUNDABORT - 529)) | (1L << (CONCAT_NULL_YIELDS_NULL - 529)) | (1L << (COMPATIBILITY_LEVEL - 529)) | (1L << (ARITHABORT - 529)) | (1L << (ANSI_WARNINGS - 529)) | (1L << (ANSI_PADDING - 529)) | (1L << (ANSI_NULLS - 529)))) != 0) || ((((_la - 593)) & ~0x3f) == 0 && ((1L << (_la - 593)) & ((1L << (ANSI_NULL_DEFAULT - 593)) | (1L << (PAGE_VERIFY - 593)) | (1L << (CHECKSUM - 593)) | (1L << (TORN_PAGE_DETECTION - 593)) | (1L << (BULK_LOGGED - 593)) | (1L << (RECOVERY - 593)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 593)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 593)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 593)) | (1L << (EXECUTION_COUNT - 593)) | (1L << (QUERY_CAPTURE_POLICY - 593)) | (1L << (WAIT_STATS_CAPTURE_MODE - 593)) | (1L << (MAX_PLANS_PER_QUERY - 593)) | (1L << (QUERY_CAPTURE_MODE - 593)) | (1L << (SIZE_BASED_CLEANUP_MODE - 593)) | (1L << (INTERVAL_LENGTH_MINUTES - 593)) | (1L << (MAX_STORAGE_SIZE_MB - 593)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 593)) | (1L << (CLEANUP_POLICY - 593)) | (1L << (CUSTOM - 593)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 593)) | (1L << (OPERATION_MODE - 593)) | (1L << (QUERY_STORE - 593)) | (1L << (CURSOR_DEFAULT - 593)) | (1L << (GLOBAL - 593)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 593)) | (1L << (HOURS - 593)) | (1L << (CHANGE_RETENTION - 593)) | (1L << (AUTO_CLEANUP - 593)) | (1L << (CHANGE_TRACKING - 593)) | (1L << (AUTOMATIC_TUNING - 593)) | (1L << (FORCE_LAST_GOOD_PLAN - 593)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 593)) | (1L << (AUTO_UPDATE_STATISTICS - 593)) | (1L << (AUTO_SHRINK - 593)) | (1L << (AUTO_CREATE_STATISTICS - 593)) | (1L << (INCREMENTAL - 593)) | (1L << (AUTO_CLOSE - 593)) | (1L << (DATA_RETENTION - 593)) | (1L << (TEMPORAL_HISTORY_RETENTION - 593)) | (1L << (EDITION - 593)) | (1L << (MIXED_PAGE_ALLOCATION - 593)) | (1L << (DISABLED - 593)) | (1L << (ALLOWED - 593)) | (1L << (HADR - 593)) | (1L << (MULTI_USER - 593)) | (1L << (RESTRICTED_USER - 593)) | (1L << (SINGLE_USER - 593)) | (1L << (OFFLINE - 593)) | (1L << (EMERGENCY - 593)) | (1L << (SUSPEND - 593)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 593)) | (1L << (ELASTIC_POOL - 593)) | (1L << (SERVICE_OBJECTIVE - 593)) | (1L << (DATABASE_NAME - 593)) | (1L << (ALLOW_CONNECTIONS - 593)) | (1L << (GEO - 593)) | (1L << (NAMED - 593)) | (1L << (DATEFIRST - 593)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 593)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 593)) | (1L << (SECONDARY - 593)) | (1L << (FAILOVER - 593)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 593)))) != 0) || ((((_la - 657)) & ~0x3f) == 0 && ((1L << (_la - 657)) & ((1L << (DEFAULT_LANGUAGE - 657)) | (1L << (INLINE - 657)) | (1L << (NESTED_TRIGGERS - 657)) | (1L << (TRANSFORM_NOISE_WORDS - 657)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 657)) | (1L << (PERSISTENT_LOG_BUFFER - 657)) | (1L << (DIRECTORY_NAME - 657)) | (1L << (DATEFORMAT - 657)) | (1L << (DELAYED_DURABILITY - 657)) | (1L << (AUTHORIZATION - 657)) | (1L << (TRANSFER - 657)) | (1L << (PROVIDER - 657)) | (1L << (SEARCH - 657)) | (1L << (MEMBER - 657)) | (1L << (OPENJSON - 657)) | (1L << (OPENROWSET - 657)) | (1L << (TRY_CAST - 657)) | (1L << (TRY_CONVERT - 657)))) != 0) || ((((_la - 721)) & ~0x3f) == 0 && ((1L << (_la - 721)) & ((1L << (IDENTIFIER_ - 721)) | (1L << (DELIMITED_IDENTIFIER_ - 721)) | (1L << (STRING_ - 721)) | (1L << (NUMBER_ - 721)) | (1L << (HEX_DIGIT_ - 721)) | (1L << (BIT_NUM_ - 721)) | (1L << (NCHAR_TEXT - 721)))) != 0)) {
8693 				{
8694 				setState(1706);
8695 				expr(0);
8696 				}
8697 			}
8698 
8699 			setState(1711);
8700 			_errHandler.sync(this);
8701 			_la = _input.LA(1);
8702 			if (_la==AS) {
8703 				{
8704 				setState(1709);
8705 				match(AS);
8706 				setState(1710);
8707 				match(JSON);
8708 				}
8709 			}
8710 
8711 			}
8712 		}
8713 		catch (RecognitionException re) {
8714 			_localctx.exception = re;
8715 			_errHandler.reportError(this, re);
8716 			_errHandler.recover(this, re);
8717 		}
8718 		finally {
8719 			exitRule();
8720 		}
8721 		return _localctx;
8722 	}
8723 
8724 	public static class OpenRowSetFunctionContext extends ParserRuleContext {
8725 		public TerminalNode OPENROWSET() { return getToken(SQLServerStatementParser.OPENROWSET, 0); }
8726 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8727 		public List<ExprContext> expr() {
8728 			return getRuleContexts(ExprContext.class);
8729 		}
8730 		public ExprContext expr(int i) {
8731 			return getRuleContext(ExprContext.class,i);
8732 		}
8733 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8734 		public TerminalNode COMMA_(int i) {
8735 			return getToken(SQLServerStatementParser.COMMA_, i);
8736 		}
8737 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8738 		public TableNameContext tableName() {
8739 			return getRuleContext(TableNameContext.class,0);
8740 		}
8741 		public List<TerminalNode> SEMI_() { return getTokens(SQLServerStatementParser.SEMI_); }
8742 		public TerminalNode SEMI_(int i) {
8743 			return getToken(SQLServerStatementParser.SEMI_, i);
8744 		}
8745 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
8746 		public OpenRowSetFunctionContext(ParserRuleContext parent, int invokingState) {
8747 			super(parent, invokingState);
8748 		}
8749 		@Override public int getRuleIndex() { return RULE_openRowSetFunction; }
8750 		@Override
8751 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8752 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenRowSetFunction(this);
8753 			else return visitor.visitChildren(this);
8754 		}
8755 	}
8756 
8757 	public final OpenRowSetFunctionContext openRowSetFunction() throws RecognitionException {
8758 		OpenRowSetFunctionContext _localctx = new OpenRowSetFunctionContext(_ctx, getState());
8759 		enterRule(_localctx, 154, RULE_openRowSetFunction);
8760 		int _la;
8761 		try {
8762 			setState(1746);
8763 			_errHandler.sync(this);
8764 			switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
8765 			case 1:
8766 				enterOuterAlt(_localctx, 1);
8767 				{
8768 				setState(1713);
8769 				match(OPENROWSET);
8770 				setState(1714);
8771 				match(LP_);
8772 				setState(1715);
8773 				expr(0);
8774 				setState(1716);
8775 				match(COMMA_);
8776 				setState(1724);
8777 				_errHandler.sync(this);
8778 				switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) {
8779 				case 1:
8780 					{
8781 					{
8782 					setState(1717);
8783 					expr(0);
8784 					setState(1718);
8785 					match(SEMI_);
8786 					setState(1719);
8787 					expr(0);
8788 					setState(1720);
8789 					match(SEMI_);
8790 					setState(1721);
8791 					expr(0);
8792 					}
8793 					}
8794 					break;
8795 				case 2:
8796 					{
8797 					setState(1723);
8798 					expr(0);
8799 					}
8800 					break;
8801 				}
8802 				setState(1726);
8803 				match(COMMA_);
8804 				setState(1729);
8805 				_errHandler.sync(this);
8806 				switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
8807 				case 1:
8808 					{
8809 					setState(1727);
8810 					tableName();
8811 					}
8812 					break;
8813 				case 2:
8814 					{
8815 					setState(1728);
8816 					expr(0);
8817 					}
8818 					break;
8819 				}
8820 				setState(1731);
8821 				match(RP_);
8822 				}
8823 				break;
8824 			case 2:
8825 				enterOuterAlt(_localctx, 2);
8826 				{
8827 				setState(1733);
8828 				match(OPENROWSET);
8829 				setState(1734);
8830 				match(LP_);
8831 				setState(1735);
8832 				match(BULK);
8833 				setState(1736);
8834 				expr(0);
8835 				setState(1741);
8836 				_errHandler.sync(this);
8837 				_la = _input.LA(1);
8838 				while (_la==COMMA_) {
8839 					{
8840 					{
8841 					setState(1737);
8842 					match(COMMA_);
8843 					setState(1738);
8844 					expr(0);
8845 					}
8846 					}
8847 					setState(1743);
8848 					_errHandler.sync(this);
8849 					_la = _input.LA(1);
8850 				}
8851 				setState(1744);
8852 				match(RP_);
8853 				}
8854 				break;
8855 			}
8856 		}
8857 		catch (RecognitionException re) {
8858 			_localctx.exception = re;
8859 			_errHandler.reportError(this, re);
8860 			_errHandler.recover(this, re);
8861 		}
8862 		finally {
8863 			exitRule();
8864 		}
8865 		return _localctx;
8866 	}
8867 
8868 	public static class RegularFunctionContext extends ParserRuleContext {
8869 		public RegularFunctionNameContext regularFunctionName() {
8870 			return getRuleContext(RegularFunctionNameContext.class,0);
8871 		}
8872 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8873 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8874 		public List<ExprContext> expr() {
8875 			return getRuleContexts(ExprContext.class);
8876 		}
8877 		public ExprContext expr(int i) {
8878 			return getRuleContext(ExprContext.class,i);
8879 		}
8880 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
8881 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8882 		public TerminalNode COMMA_(int i) {
8883 			return getToken(SQLServerStatementParser.COMMA_, i);
8884 		}
8885 		public RegularFunctionContext(ParserRuleContext parent, int invokingState) {
8886 			super(parent, invokingState);
8887 		}
8888 		@Override public int getRuleIndex() { return RULE_regularFunction; }
8889 		@Override
8890 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8891 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunction(this);
8892 			else return visitor.visitChildren(this);
8893 		}
8894 	}
8895 
8896 	public final RegularFunctionContext regularFunction() throws RecognitionException {
8897 		RegularFunctionContext _localctx = new RegularFunctionContext(_ctx, getState());
8898 		enterRule(_localctx, 156, RULE_regularFunction);
8899 		int _la;
8900 		try {
8901 			enterOuterAlt(_localctx, 1);
8902 			{
8903 			setState(1748);
8904 			regularFunctionName();
8905 			setState(1749);
8906 			match(LP_);
8907 			setState(1759);
8908 			_errHandler.sync(this);
8909 			switch (_input.LA(1)) {
8910 			case NOT_:
8911 			case TILDE_:
8912 			case PLUS_:
8913 			case MINUS_:
8914 			case LP_:
8915 			case LBE_:
8916 			case QUESTION_:
8917 			case DOLLAR_:
8918 			case TRUNCATE:
8919 			case SCHEMA:
8920 			case COLUMNS:
8921 			case PRECISION:
8922 			case FUNCTION:
8923 			case TRIGGER:
8924 			case CASE:
8925 			case CAST:
8926 			case TRIM:
8927 			case SUBSTRING:
8928 			case OFF:
8929 			case IF:
8930 			case NOT:
8931 			case NULL:
8932 			case TRUE:
8933 			case FALSE:
8934 			case EXISTS:
8935 			case GROUP:
8936 			case LIMIT:
8937 			case OFFSET:
8938 			case SAVEPOINT:
8939 			case BOOLEAN:
8940 			case CHAR:
8941 			case ARRAY:
8942 			case INTERVAL:
8943 			case DATE:
8944 			case TIME:
8945 			case TIMESTAMP:
8946 			case LOCALTIME:
8947 			case LOCALTIMESTAMP:
8948 			case YEAR:
8949 			case QUARTER:
8950 			case MONTH:
8951 			case WEEK:
8952 			case DAY:
8953 			case SECOND:
8954 			case MICROSECOND:
8955 			case MAX:
8956 			case MIN:
8957 			case SUM:
8958 			case COUNT:
8959 			case AVG:
8960 			case ENABLE:
8961 			case DISABLE:
8962 			case INSTANCE:
8963 			case DO:
8964 			case DEFINER:
8965 			case SQL:
8966 			case CASCADED:
8967 			case LOCAL:
8968 			case NEXT:
8969 			case NAME:
8970 			case INTEGER:
8971 			case TYPE:
8972 			case TEXT:
8973 			case VIEWS:
8974 			case READ_ONLY:
8975 			case DATABASE:
8976 			case RETURNS:
8977 			case DATEPART:
8978 			case PASSWORD:
8979 			case JSON_OBJECT:
8980 			case JSON_ARRAY:
8981 			case FIRST_VALUE:
8982 			case LAST_VALUE:
8983 			case APPROX_PERCENTILE_CONT:
8984 			case APPROX_PERCENTILE_DISC:
8985 			case BINARY:
8986 			case HIDDEN_:
8987 			case MOD:
8988 			case PARTITION:
8989 			case PARTITIONS:
8990 			case TOP:
8991 			case ROW:
8992 			case ROWS:
8993 			case XOR:
8994 			case ALWAYS:
8995 			case ROLE:
8996 			case START:
8997 			case ALGORITHM:
8998 			case AUTO:
8999 			case BLOCKERS:
9000 			case CLUSTERED:
9001 			case NONCLUSTERED:
9002 			case COLUMNSTORE:
9003 			case CONTENT:
9004 			case CONVERT:
9005 			case YEARS:
9006 			case MONTHS:
9007 			case WEEKS:
9008 			case DAYS:
9009 			case MINUTES:
9010 			case DENY:
9011 			case DETERMINISTIC:
9012 			case DISTRIBUTION:
9013 			case DOCUMENT:
9014 			case DURABILITY:
9015 			case ENCRYPTED:
9016 			case FILESTREAM:
9017 			case FILETABLE:
9018 			case FILLFACTOR:
9019 			case FOLLOWING:
9020 			case HASH:
9021 			case HEAP:
9022 			case INBOUND:
9023 			case OUTBOUND:
9024 			case UNBOUNDED:
9025 			case INFINITE:
9026 			case LOGIN:
9027 			case MASKED:
9028 			case MAXDOP:
9029 			case MOVE:
9030 			case NOCHECK:
9031 			case OBJECT:
9032 			case ONLINE:
9033 			case OVER:
9034 			case PAGE:
9035 			case PAUSED:
9036 			case PERIOD:
9037 			case PERSISTED:
9038 			case PRECEDING:
9039 			case RANDOMIZED:
9040 			case RANGE:
9041 			case REBUILD:
9042 			case REPLICATE:
9043 			case REPLICATION:
9044 			case RESUMABLE:
9045 			case ROWGUIDCOL:
9046 			case SAVE:
9047 			case SELF:
9048 			case SPARSE:
9049 			case SWITCH:
9050 			case TRAN:
9051 			case TRANCOUNT:
9052 			case CONTROL:
9053 			case CONCAT:
9054 			case TAKE:
9055 			case OWNERSHIP:
9056 			case DEFINITION:
9057 			case APPLICATION:
9058 			case ASSEMBLY:
9059 			case SYMMETRIC:
9060 			case ASYMMETRIC:
9061 			case SERVER:
9062 			case RECEIVE:
9063 			case CHANGE:
9064 			case TRACE:
9065 			case TRACKING:
9066 			case RESOURCES:
9067 			case SETTINGS:
9068 			case STATE:
9069 			case AVAILABILITY:
9070 			case CREDENTIAL:
9071 			case ENDPOINT:
9072 			case EVENT:
9073 			case NOTIFICATION:
9074 			case LINKED:
9075 			case AUDIT:
9076 			case DDL:
9077 			case XML:
9078 			case IMPERSONATE:
9079 			case SECURABLES:
9080 			case AUTHENTICATE:
9081 			case EXTERNAL:
9082 			case ACCESS:
9083 			case ADMINISTER:
9084 			case BULK:
9085 			case OPERATIONS:
9086 			case UNSAFE:
9087 			case SHUTDOWN:
9088 			case SCOPED:
9089 			case CONFIGURATION:
9090 			case DATASPACE:
9091 			case SERVICE:
9092 			case CERTIFICATE:
9093 			case CONTRACT:
9094 			case ENCRYPTION:
9095 			case MASTER:
9096 			case DATA:
9097 			case SOURCE:
9098 			case FILE:
9099 			case FORMAT:
9100 			case LIBRARY:
9101 			case FULLTEXT:
9102 			case MASK:
9103 			case UNMASK:
9104 			case MESSAGE:
9105 			case REMOTE:
9106 			case BINDING:
9107 			case ROUTE:
9108 			case SECURITY:
9109 			case POLICY:
9110 			case AGGREGATE:
9111 			case QUEUE:
9112 			case RULE:
9113 			case SYNONYM:
9114 			case COLLECTION:
9115 			case SCRIPT:
9116 			case KILL:
9117 			case BACKUP:
9118 			case LOG:
9119 			case SHOWPLAN:
9120 			case SUBSCRIBE:
9121 			case QUERY:
9122 			case NOTIFICATIONS:
9123 			case CHECKPOINT:
9124 			case SEQUENCE:
9125 			case ABORT_AFTER_WAIT:
9126 			case ALLOW_PAGE_LOCKS:
9127 			case ALLOW_ROW_LOCKS:
9128 			case ALL_SPARSE_COLUMNS:
9129 			case BUCKET_COUNT:
9130 			case COLUMNSTORE_ARCHIVE:
9131 			case COLUMN_ENCRYPTION_KEY:
9132 			case COLUMN_SET:
9133 			case COMPRESSION_DELAY:
9134 			case DATABASE_DEAULT:
9135 			case DATA_COMPRESSION:
9136 			case DATA_CONSISTENCY_CHECK:
9137 			case ENCRYPTION_TYPE:
9138 			case SYSTEM_TIME:
9139 			case SYSTEM_VERSIONING:
9140 			case TEXTIMAGE_ON:
9141 			case WAIT_AT_LOW_PRIORITY:
9142 			case STATISTICS_INCREMENTAL:
9143 			case STATISTICS_NORECOMPUTE:
9144 			case ROUND_ROBIN:
9145 			case SCHEMA_AND_DATA:
9146 			case SCHEMA_ONLY:
9147 			case SORT_IN_TEMPDB:
9148 			case IGNORE_DUP_KEY:
9149 			case IMPLICIT_TRANSACTIONS:
9150 			case MAX_DURATION:
9151 			case MEMORY_OPTIMIZED:
9152 			case MIGRATION_STATE:
9153 			case PAD_INDEX:
9154 			case REMOTE_DATA_ARCHIVE:
9155 			case FILESTREAM_ON:
9156 			case FILETABLE_COLLATE_FILENAME:
9157 			case FILETABLE_DIRECTORY:
9158 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
9159 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
9160 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
9161 			case FILTER_PREDICATE:
9162 			case HISTORY_RETENTION_PERIOD:
9163 			case HISTORY_TABLE:
9164 			case LOCK_ESCALATION:
9165 			case DROP_EXISTING:
9166 			case ROW_NUMBER:
9167 			case FIRST:
9168 			case DATETIME2:
9169 			case OUTPUT:
9170 			case INSERTED:
9171 			case DELETED:
9172 			case FILENAME:
9173 			case SIZE:
9174 			case MAXSIZE:
9175 			case FILEGROWTH:
9176 			case UNLIMITED:
9177 			case KB:
9178 			case MB:
9179 			case GB:
9180 			case TB:
9181 			case CONTAINS:
9182 			case MEMORY_OPTIMIZED_DATA:
9183 			case FILEGROUP:
9184 			case NON_TRANSACTED_ACCESS:
9185 			case DB_CHAINING:
9186 			case TRUSTWORTHY:
9187 			case FORWARD_ONLY:
9188 			case KEYSET:
9189 			case FAST_FORWARD:
9190 			case SCROLL_LOCKS:
9191 			case OPTIMISTIC:
9192 			case TYPE_WARNING:
9193 			case SCHEMABINDING:
9194 			case CALLER:
9195 			case INPUT:
9196 			case OWNER:
9197 			case SNAPSHOT:
9198 			case REPEATABLE:
9199 			case SERIALIZABLE:
9200 			case NATIVE_COMPILATION:
9201 			case VIEW_METADATA:
9202 			case INSTEAD:
9203 			case APPEND:
9204 			case INCREMENT:
9205 			case CACHE:
9206 			case MINVALUE:
9207 			case MAXVALUE:
9208 			case RESTART:
9209 			case LOB_COMPACTION:
9210 			case COMPRESS_ALL_ROW_GROUPS:
9211 			case REORGANIZE:
9212 			case RESUME:
9213 			case PAUSE:
9214 			case ABORT:
9215 			case ACCELERATED_DATABASE_RECOVERY:
9216 			case PERSISTENT_VERSION_STORE_FILEGROUP:
9217 			case IMMEDIATE:
9218 			case NO_WAIT:
9219 			case TARGET_RECOVERY_TIME:
9220 			case SECONDS:
9221 			case HONOR_BROKER_PRIORITY:
9222 			case ERROR_BROKER_CONVERSATIONS:
9223 			case NEW_BROKER:
9224 			case DISABLE_BROKER:
9225 			case ENABLE_BROKER:
9226 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
9227 			case READ_COMMITTED_SNAPSHOT:
9228 			case ALLOW_SNAPSHOT_ISOLATION:
9229 			case RECURSIVE_TRIGGERS:
9230 			case QUOTED_IDENTIFIER:
9231 			case NUMERIC_ROUNDABORT:
9232 			case CONCAT_NULL_YIELDS_NULL:
9233 			case COMPATIBILITY_LEVEL:
9234 			case ARITHABORT:
9235 			case ANSI_WARNINGS:
9236 			case ANSI_PADDING:
9237 			case ANSI_NULLS:
9238 			case ANSI_NULL_DEFAULT:
9239 			case PAGE_VERIFY:
9240 			case CHECKSUM:
9241 			case TORN_PAGE_DETECTION:
9242 			case BULK_LOGGED:
9243 			case RECOVERY:
9244 			case TOTAL_EXECUTION_CPU_TIME_MS:
9245 			case TOTAL_COMPILE_CPU_TIME_MS:
9246 			case STALE_CAPTURE_POLICY_THRESHOLD:
9247 			case EXECUTION_COUNT:
9248 			case QUERY_CAPTURE_POLICY:
9249 			case WAIT_STATS_CAPTURE_MODE:
9250 			case MAX_PLANS_PER_QUERY:
9251 			case QUERY_CAPTURE_MODE:
9252 			case SIZE_BASED_CLEANUP_MODE:
9253 			case INTERVAL_LENGTH_MINUTES:
9254 			case MAX_STORAGE_SIZE_MB:
9255 			case DATA_FLUSH_INTERVAL_SECONDS:
9256 			case CLEANUP_POLICY:
9257 			case CUSTOM:
9258 			case STALE_QUERY_THRESHOLD_DAYS:
9259 			case OPERATION_MODE:
9260 			case QUERY_STORE:
9261 			case CURSOR_DEFAULT:
9262 			case GLOBAL:
9263 			case CURSOR_CLOSE_ON_COMMIT:
9264 			case HOURS:
9265 			case CHANGE_RETENTION:
9266 			case AUTO_CLEANUP:
9267 			case CHANGE_TRACKING:
9268 			case AUTOMATIC_TUNING:
9269 			case FORCE_LAST_GOOD_PLAN:
9270 			case AUTO_UPDATE_STATISTICS_ASYNC:
9271 			case AUTO_UPDATE_STATISTICS:
9272 			case AUTO_SHRINK:
9273 			case AUTO_CREATE_STATISTICS:
9274 			case INCREMENTAL:
9275 			case AUTO_CLOSE:
9276 			case DATA_RETENTION:
9277 			case TEMPORAL_HISTORY_RETENTION:
9278 			case EDITION:
9279 			case MIXED_PAGE_ALLOCATION:
9280 			case DISABLED:
9281 			case ALLOWED:
9282 			case HADR:
9283 			case MULTI_USER:
9284 			case RESTRICTED_USER:
9285 			case SINGLE_USER:
9286 			case OFFLINE:
9287 			case EMERGENCY:
9288 			case SUSPEND:
9289 			case DATE_CORRELATION_OPTIMIZATION:
9290 			case ELASTIC_POOL:
9291 			case SERVICE_OBJECTIVE:
9292 			case DATABASE_NAME:
9293 			case ALLOW_CONNECTIONS:
9294 			case GEO:
9295 			case NAMED:
9296 			case DATEFIRST:
9297 			case BACKUP_STORAGE_REDUNDANCY:
9298 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
9299 			case SECONDARY:
9300 			case FAILOVER:
9301 			case DEFAULT_FULLTEXT_LANGUAGE:
9302 			case DEFAULT_LANGUAGE:
9303 			case INLINE:
9304 			case NESTED_TRIGGERS:
9305 			case TRANSFORM_NOISE_WORDS:
9306 			case TWO_DIGIT_YEAR_CUTOFF:
9307 			case PERSISTENT_LOG_BUFFER:
9308 			case DIRECTORY_NAME:
9309 			case DATEFORMAT:
9310 			case DELAYED_DURABILITY:
9311 			case AUTHORIZATION:
9312 			case TRANSFER:
9313 			case PROVIDER:
9314 			case SEARCH:
9315 			case MEMBER:
9316 			case OPENJSON:
9317 			case OPENROWSET:
9318 			case TRY_CAST:
9319 			case TRY_CONVERT:
9320 			case IDENTIFIER_:
9321 			case DELIMITED_IDENTIFIER_:
9322 			case STRING_:
9323 			case NUMBER_:
9324 			case HEX_DIGIT_:
9325 			case BIT_NUM_:
9326 			case NCHAR_TEXT:
9327 				{
9328 				setState(1750);
9329 				expr(0);
9330 				setState(1755);
9331 				_errHandler.sync(this);
9332 				_la = _input.LA(1);
9333 				while (_la==COMMA_) {
9334 					{
9335 					{
9336 					setState(1751);
9337 					match(COMMA_);
9338 					setState(1752);
9339 					expr(0);
9340 					}
9341 					}
9342 					setState(1757);
9343 					_errHandler.sync(this);
9344 					_la = _input.LA(1);
9345 				}
9346 				}
9347 				break;
9348 			case ASTERISK_:
9349 				{
9350 				setState(1758);
9351 				match(ASTERISK_);
9352 				}
9353 				break;
9354 			case RP_:
9355 				break;
9356 			default:
9357 				break;
9358 			}
9359 			setState(1761);
9360 			match(RP_);
9361 			}
9362 		}
9363 		catch (RecognitionException re) {
9364 			_localctx.exception = re;
9365 			_errHandler.reportError(this, re);
9366 			_errHandler.recover(this, re);
9367 		}
9368 		finally {
9369 			exitRule();
9370 		}
9371 		return _localctx;
9372 	}
9373 
9374 	public static class RegularFunctionNameContext extends ParserRuleContext {
9375 		public IdentifierContext identifier() {
9376 			return getRuleContext(IdentifierContext.class,0);
9377 		}
9378 		public OwnerContext owner() {
9379 			return getRuleContext(OwnerContext.class,0);
9380 		}
9381 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
9382 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
9383 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
9384 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
9385 		public TerminalNode INTERVAL() { return getToken(SQLServerStatementParser.INTERVAL, 0); }
9386 		public RegularFunctionNameContext(ParserRuleContext parent, int invokingState) {
9387 			super(parent, invokingState);
9388 		}
9389 		@Override public int getRuleIndex() { return RULE_regularFunctionName; }
9390 		@Override
9391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunctionName(this);
9393 			else return visitor.visitChildren(this);
9394 		}
9395 	}
9396 
9397 	public final RegularFunctionNameContext regularFunctionName() throws RecognitionException {
9398 		RegularFunctionNameContext _localctx = new RegularFunctionNameContext(_ctx, getState());
9399 		enterRule(_localctx, 158, RULE_regularFunctionName);
9400 		try {
9401 			setState(1773);
9402 			_errHandler.sync(this);
9403 			switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) {
9404 			case 1:
9405 				enterOuterAlt(_localctx, 1);
9406 				{
9407 				setState(1766);
9408 				_errHandler.sync(this);
9409 				switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) {
9410 				case 1:
9411 					{
9412 					setState(1763);
9413 					owner();
9414 					setState(1764);
9415 					match(DOT_);
9416 					}
9417 					break;
9418 				}
9419 				setState(1768);
9420 				identifier();
9421 				}
9422 				break;
9423 			case 2:
9424 				enterOuterAlt(_localctx, 2);
9425 				{
9426 				setState(1769);
9427 				match(IF);
9428 				}
9429 				break;
9430 			case 3:
9431 				enterOuterAlt(_localctx, 3);
9432 				{
9433 				setState(1770);
9434 				match(LOCALTIME);
9435 				}
9436 				break;
9437 			case 4:
9438 				enterOuterAlt(_localctx, 4);
9439 				{
9440 				setState(1771);
9441 				match(LOCALTIMESTAMP);
9442 				}
9443 				break;
9444 			case 5:
9445 				enterOuterAlt(_localctx, 5);
9446 				{
9447 				setState(1772);
9448 				match(INTERVAL);
9449 				}
9450 				break;
9451 			}
9452 		}
9453 		catch (RecognitionException re) {
9454 			_localctx.exception = re;
9455 			_errHandler.reportError(this, re);
9456 			_errHandler.recover(this, re);
9457 		}
9458 		finally {
9459 			exitRule();
9460 		}
9461 		return _localctx;
9462 	}
9463 
9464 	public static class CaseExpressionContext extends ParserRuleContext {
9465 		public TerminalNode CASE() { return getToken(SQLServerStatementParser.CASE, 0); }
9466 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
9467 		public SimpleExprContext simpleExpr() {
9468 			return getRuleContext(SimpleExprContext.class,0);
9469 		}
9470 		public List<CaseWhenContext> caseWhen() {
9471 			return getRuleContexts(CaseWhenContext.class);
9472 		}
9473 		public CaseWhenContext caseWhen(int i) {
9474 			return getRuleContext(CaseWhenContext.class,i);
9475 		}
9476 		public CaseElseContext caseElse() {
9477 			return getRuleContext(CaseElseContext.class,0);
9478 		}
9479 		public CaseExpressionContext(ParserRuleContext parent, int invokingState) {
9480 			super(parent, invokingState);
9481 		}
9482 		@Override public int getRuleIndex() { return RULE_caseExpression; }
9483 		@Override
9484 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9485 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseExpression(this);
9486 			else return visitor.visitChildren(this);
9487 		}
9488 	}
9489 
9490 	public final CaseExpressionContext caseExpression() throws RecognitionException {
9491 		CaseExpressionContext _localctx = new CaseExpressionContext(_ctx, getState());
9492 		enterRule(_localctx, 160, RULE_caseExpression);
9493 		int _la;
9494 		try {
9495 			enterOuterAlt(_localctx, 1);
9496 			{
9497 			setState(1775);
9498 			match(CASE);
9499 			setState(1777);
9500 			_errHandler.sync(this);
9501 			_la = _input.LA(1);
9502 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (JSON_OBJECT - 203)) | (1L << (JSON_ARRAY - 203)) | (1L << (FIRST_VALUE - 203)) | (1L << (LAST_VALUE - 203)) | (1L << (APPROX_PERCENTILE_CONT - 203)) | (1L << (APPROX_PERCENTILE_DISC - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (CONVERT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (CONTROL - 331)) | (1L << (CONCAT - 331)) | (1L << (TAKE - 331)) | (1L << (OWNERSHIP - 331)) | (1L << (DEFINITION - 331)) | (1L << (APPLICATION - 331)) | (1L << (ASSEMBLY - 331)) | (1L << (SYMMETRIC - 331)) | (1L << (ASYMMETRIC - 331)) | (1L << (SERVER - 331)) | (1L << (RECEIVE - 331)) | (1L << (CHANGE - 331)) | (1L << (TRACE - 331)) | (1L << (TRACKING - 331)) | (1L << (RESOURCES - 331)) | (1L << (SETTINGS - 331)) | (1L << (STATE - 331)) | (1L << (AVAILABILITY - 331)) | (1L << (CREDENTIAL - 331)) | (1L << (ENDPOINT - 331)) | (1L << (EVENT - 331)) | (1L << (NOTIFICATION - 331)) | (1L << (LINKED - 331)) | (1L << (AUDIT - 331)) | (1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (KILL - 395)) | (1L << (BACKUP - 395)) | (1L << (LOG - 395)) | (1L << (SHOWPLAN - 395)) | (1L << (SUBSCRIBE - 395)) | (1L << (QUERY - 395)) | (1L << (NOTIFICATIONS - 395)) | (1L << (CHECKPOINT - 395)) | (1L << (SEQUENCE - 395)) | (1L << (ABORT_AFTER_WAIT - 395)) | (1L << (ALLOW_PAGE_LOCKS - 395)) | (1L << (ALLOW_ROW_LOCKS - 395)) | (1L << (ALL_SPARSE_COLUMNS - 395)) | (1L << (BUCKET_COUNT - 395)) | (1L << (COLUMNSTORE_ARCHIVE - 395)) | (1L << (COLUMN_ENCRYPTION_KEY - 395)) | (1L << (COLUMN_SET - 395)) | (1L << (COMPRESSION_DELAY - 395)) | (1L << (DATABASE_DEAULT - 395)) | (1L << (DATA_COMPRESSION - 395)) | (1L << (DATA_CONSISTENCY_CHECK - 395)) | (1L << (ENCRYPTION_TYPE - 395)) | (1L << (SYSTEM_TIME - 395)) | (1L << (SYSTEM_VERSIONING - 395)) | (1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)))) != 0) || ((((_la - 465)) & ~0x3f) == 0 && ((1L << (_la - 465)) & ((1L << (OUTPUT - 465)) | (1L << (INSERTED - 465)) | (1L << (DELETED - 465)) | (1L << (FILENAME - 465)) | (1L << (SIZE - 465)) | (1L << (MAXSIZE - 465)) | (1L << (FILEGROWTH - 465)) | (1L << (UNLIMITED - 465)) | (1L << (KB - 465)) | (1L << (MB - 465)) | (1L << (GB - 465)) | (1L << (TB - 465)) | (1L << (CONTAINS - 465)) | (1L << (MEMORY_OPTIMIZED_DATA - 465)) | (1L << (FILEGROUP - 465)) | (1L << (NON_TRANSACTED_ACCESS - 465)) | (1L << (DB_CHAINING - 465)) | (1L << (TRUSTWORTHY - 465)) | (1L << (FORWARD_ONLY - 465)) | (1L << (KEYSET - 465)) | (1L << (FAST_FORWARD - 465)) | (1L << (SCROLL_LOCKS - 465)) | (1L << (OPTIMISTIC - 465)) | (1L << (TYPE_WARNING - 465)) | (1L << (SCHEMABINDING - 465)))) != 0) || ((((_la - 529)) & ~0x3f) == 0 && ((1L << (_la - 529)) & ((1L << (CALLER - 529)) | (1L << (INPUT - 529)) | (1L << (OWNER - 529)) | (1L << (SNAPSHOT - 529)) | (1L << (REPEATABLE - 529)) | (1L << (SERIALIZABLE - 529)) | (1L << (NATIVE_COMPILATION - 529)) | (1L << (VIEW_METADATA - 529)) | (1L << (INSTEAD - 529)) | (1L << (APPEND - 529)) | (1L << (INCREMENT - 529)) | (1L << (CACHE - 529)) | (1L << (MINVALUE - 529)) | (1L << (MAXVALUE - 529)) | (1L << (RESTART - 529)) | (1L << (LOB_COMPACTION - 529)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 529)) | (1L << (REORGANIZE - 529)) | (1L << (RESUME - 529)) | (1L << (PAUSE - 529)) | (1L << (ABORT - 529)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 529)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 529)) | (1L << (IMMEDIATE - 529)) | (1L << (NO_WAIT - 529)) | (1L << (TARGET_RECOVERY_TIME - 529)) | (1L << (SECONDS - 529)) | (1L << (HONOR_BROKER_PRIORITY - 529)) | (1L << (ERROR_BROKER_CONVERSATIONS - 529)) | (1L << (NEW_BROKER - 529)) | (1L << (DISABLE_BROKER - 529)) | (1L << (ENABLE_BROKER - 529)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 529)) | (1L << (READ_COMMITTED_SNAPSHOT - 529)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 529)) | (1L << (RECURSIVE_TRIGGERS - 529)) | (1L << (QUOTED_IDENTIFIER - 529)) | (1L << (NUMERIC_ROUNDABORT - 529)) | (1L << (CONCAT_NULL_YIELDS_NULL - 529)) | (1L << (COMPATIBILITY_LEVEL - 529)) | (1L << (ARITHABORT - 529)) | (1L << (ANSI_WARNINGS - 529)) | (1L << (ANSI_PADDING - 529)) | (1L << (ANSI_NULLS - 529)))) != 0) || ((((_la - 593)) & ~0x3f) == 0 && ((1L << (_la - 593)) & ((1L << (ANSI_NULL_DEFAULT - 593)) | (1L << (PAGE_VERIFY - 593)) | (1L << (CHECKSUM - 593)) | (1L << (TORN_PAGE_DETECTION - 593)) | (1L << (BULK_LOGGED - 593)) | (1L << (RECOVERY - 593)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 593)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 593)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 593)) | (1L << (EXECUTION_COUNT - 593)) | (1L << (QUERY_CAPTURE_POLICY - 593)) | (1L << (WAIT_STATS_CAPTURE_MODE - 593)) | (1L << (MAX_PLANS_PER_QUERY - 593)) | (1L << (QUERY_CAPTURE_MODE - 593)) | (1L << (SIZE_BASED_CLEANUP_MODE - 593)) | (1L << (INTERVAL_LENGTH_MINUTES - 593)) | (1L << (MAX_STORAGE_SIZE_MB - 593)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 593)) | (1L << (CLEANUP_POLICY - 593)) | (1L << (CUSTOM - 593)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 593)) | (1L << (OPERATION_MODE - 593)) | (1L << (QUERY_STORE - 593)) | (1L << (CURSOR_DEFAULT - 593)) | (1L << (GLOBAL - 593)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 593)) | (1L << (HOURS - 593)) | (1L << (CHANGE_RETENTION - 593)) | (1L << (AUTO_CLEANUP - 593)) | (1L << (CHANGE_TRACKING - 593)) | (1L << (AUTOMATIC_TUNING - 593)) | (1L << (FORCE_LAST_GOOD_PLAN - 593)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 593)) | (1L << (AUTO_UPDATE_STATISTICS - 593)) | (1L << (AUTO_SHRINK - 593)) | (1L << (AUTO_CREATE_STATISTICS - 593)) | (1L << (INCREMENTAL - 593)) | (1L << (AUTO_CLOSE - 593)) | (1L << (DATA_RETENTION - 593)) | (1L << (TEMPORAL_HISTORY_RETENTION - 593)) | (1L << (EDITION - 593)) | (1L << (MIXED_PAGE_ALLOCATION - 593)) | (1L << (DISABLED - 593)) | (1L << (ALLOWED - 593)) | (1L << (HADR - 593)) | (1L << (MULTI_USER - 593)) | (1L << (RESTRICTED_USER - 593)) | (1L << (SINGLE_USER - 593)) | (1L << (OFFLINE - 593)) | (1L << (EMERGENCY - 593)) | (1L << (SUSPEND - 593)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 593)) | (1L << (ELASTIC_POOL - 593)) | (1L << (SERVICE_OBJECTIVE - 593)) | (1L << (DATABASE_NAME - 593)) | (1L << (ALLOW_CONNECTIONS - 593)) | (1L << (GEO - 593)) | (1L << (NAMED - 593)) | (1L << (DATEFIRST - 593)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 593)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 593)) | (1L << (SECONDARY - 593)) | (1L << (FAILOVER - 593)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 593)))) != 0) || ((((_la - 657)) & ~0x3f) == 0 && ((1L << (_la - 657)) & ((1L << (DEFAULT_LANGUAGE - 657)) | (1L << (INLINE - 657)) | (1L << (NESTED_TRIGGERS - 657)) | (1L << (TRANSFORM_NOISE_WORDS - 657)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 657)) | (1L << (PERSISTENT_LOG_BUFFER - 657)) | (1L << (DIRECTORY_NAME - 657)) | (1L << (DATEFORMAT - 657)) | (1L << (DELAYED_DURABILITY - 657)) | (1L << (AUTHORIZATION - 657)) | (1L << (TRANSFER - 657)) | (1L << (PROVIDER - 657)) | (1L << (SEARCH - 657)) | (1L << (MEMBER - 657)) | (1L << (OPENJSON - 657)) | (1L << (OPENROWSET - 657)) | (1L << (TRY_CAST - 657)) | (1L << (TRY_CONVERT - 657)))) != 0) || ((((_la - 721)) & ~0x3f) == 0 && ((1L << (_la - 721)) & ((1L << (IDENTIFIER_ - 721)) | (1L << (DELIMITED_IDENTIFIER_ - 721)) | (1L << (STRING_ - 721)) | (1L << (NUMBER_ - 721)) | (1L << (HEX_DIGIT_ - 721)) | (1L << (BIT_NUM_ - 721)) | (1L << (NCHAR_TEXT - 721)))) != 0)) {
9503 				{
9504 				setState(1776);
9505 				simpleExpr(0);
9506 				}
9507 			}
9508 
9509 			setState(1780); 
9510 			_errHandler.sync(this);
9511 			_la = _input.LA(1);
9512 			do {
9513 				{
9514 				{
9515 				setState(1779);
9516 				caseWhen();
9517 				}
9518 				}
9519 				setState(1782); 
9520 				_errHandler.sync(this);
9521 				_la = _input.LA(1);
9522 			} while ( _la==WHEN );
9523 			setState(1785);
9524 			_errHandler.sync(this);
9525 			_la = _input.LA(1);
9526 			if (_la==ELSE) {
9527 				{
9528 				setState(1784);
9529 				caseElse();
9530 				}
9531 			}
9532 
9533 			setState(1787);
9534 			match(END);
9535 			}
9536 		}
9537 		catch (RecognitionException re) {
9538 			_localctx.exception = re;
9539 			_errHandler.reportError(this, re);
9540 			_errHandler.recover(this, re);
9541 		}
9542 		finally {
9543 			exitRule();
9544 		}
9545 		return _localctx;
9546 	}
9547 
9548 	public static class CaseWhenContext extends ParserRuleContext {
9549 		public TerminalNode WHEN() { return getToken(SQLServerStatementParser.WHEN, 0); }
9550 		public List<ExprContext> expr() {
9551 			return getRuleContexts(ExprContext.class);
9552 		}
9553 		public ExprContext expr(int i) {
9554 			return getRuleContext(ExprContext.class,i);
9555 		}
9556 		public TerminalNode THEN() { return getToken(SQLServerStatementParser.THEN, 0); }
9557 		public CaseWhenContext(ParserRuleContext parent, int invokingState) {
9558 			super(parent, invokingState);
9559 		}
9560 		@Override public int getRuleIndex() { return RULE_caseWhen; }
9561 		@Override
9562 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9563 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseWhen(this);
9564 			else return visitor.visitChildren(this);
9565 		}
9566 	}
9567 
9568 	public final CaseWhenContext caseWhen() throws RecognitionException {
9569 		CaseWhenContext _localctx = new CaseWhenContext(_ctx, getState());
9570 		enterRule(_localctx, 162, RULE_caseWhen);
9571 		try {
9572 			enterOuterAlt(_localctx, 1);
9573 			{
9574 			setState(1789);
9575 			match(WHEN);
9576 			setState(1790);
9577 			expr(0);
9578 			setState(1791);
9579 			match(THEN);
9580 			setState(1792);
9581 			expr(0);
9582 			}
9583 		}
9584 		catch (RecognitionException re) {
9585 			_localctx.exception = re;
9586 			_errHandler.reportError(this, re);
9587 			_errHandler.recover(this, re);
9588 		}
9589 		finally {
9590 			exitRule();
9591 		}
9592 		return _localctx;
9593 	}
9594 
9595 	public static class CaseElseContext extends ParserRuleContext {
9596 		public TerminalNode ELSE() { return getToken(SQLServerStatementParser.ELSE, 0); }
9597 		public ExprContext expr() {
9598 			return getRuleContext(ExprContext.class,0);
9599 		}
9600 		public CaseElseContext(ParserRuleContext parent, int invokingState) {
9601 			super(parent, invokingState);
9602 		}
9603 		@Override public int getRuleIndex() { return RULE_caseElse; }
9604 		@Override
9605 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9606 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseElse(this);
9607 			else return visitor.visitChildren(this);
9608 		}
9609 	}
9610 
9611 	public final CaseElseContext caseElse() throws RecognitionException {
9612 		CaseElseContext _localctx = new CaseElseContext(_ctx, getState());
9613 		enterRule(_localctx, 164, RULE_caseElse);
9614 		try {
9615 			enterOuterAlt(_localctx, 1);
9616 			{
9617 			setState(1794);
9618 			match(ELSE);
9619 			setState(1795);
9620 			expr(0);
9621 			}
9622 		}
9623 		catch (RecognitionException re) {
9624 			_localctx.exception = re;
9625 			_errHandler.reportError(this, re);
9626 			_errHandler.recover(this, re);
9627 		}
9628 		finally {
9629 			exitRule();
9630 		}
9631 		return _localctx;
9632 	}
9633 
9634 	public static class PrivateExprOfDbContext extends ParserRuleContext {
9635 		public WindowFunctionContext windowFunction() {
9636 			return getRuleContext(WindowFunctionContext.class,0);
9637 		}
9638 		public AtTimeZoneExprContext atTimeZoneExpr() {
9639 			return getRuleContext(AtTimeZoneExprContext.class,0);
9640 		}
9641 		public CastExprContext castExpr() {
9642 			return getRuleContext(CastExprContext.class,0);
9643 		}
9644 		public ConvertExprContext convertExpr() {
9645 			return getRuleContext(ConvertExprContext.class,0);
9646 		}
9647 		public PrivateExprOfDbContext(ParserRuleContext parent, int invokingState) {
9648 			super(parent, invokingState);
9649 		}
9650 		@Override public int getRuleIndex() { return RULE_privateExprOfDb; }
9651 		@Override
9652 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9653 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivateExprOfDb(this);
9654 			else return visitor.visitChildren(this);
9655 		}
9656 	}
9657 
9658 	public final PrivateExprOfDbContext privateExprOfDb() throws RecognitionException {
9659 		PrivateExprOfDbContext _localctx = new PrivateExprOfDbContext(_ctx, getState());
9660 		enterRule(_localctx, 166, RULE_privateExprOfDb);
9661 		try {
9662 			setState(1801);
9663 			_errHandler.sync(this);
9664 			switch (_input.LA(1)) {
9665 			case FIRST_VALUE:
9666 			case LAST_VALUE:
9667 				enterOuterAlt(_localctx, 1);
9668 				{
9669 				setState(1797);
9670 				windowFunction();
9671 				}
9672 				break;
9673 			case IDENTIFIER_:
9674 				enterOuterAlt(_localctx, 2);
9675 				{
9676 				setState(1798);
9677 				atTimeZoneExpr();
9678 				}
9679 				break;
9680 			case CAST:
9681 				enterOuterAlt(_localctx, 3);
9682 				{
9683 				setState(1799);
9684 				castExpr();
9685 				}
9686 				break;
9687 			case CONVERT:
9688 				enterOuterAlt(_localctx, 4);
9689 				{
9690 				setState(1800);
9691 				convertExpr();
9692 				}
9693 				break;
9694 			default:
9695 				throw new NoViableAltException(this);
9696 			}
9697 		}
9698 		catch (RecognitionException re) {
9699 			_localctx.exception = re;
9700 			_errHandler.reportError(this, re);
9701 			_errHandler.recover(this, re);
9702 		}
9703 		finally {
9704 			exitRule();
9705 		}
9706 		return _localctx;
9707 	}
9708 
9709 	public static class OrderByClauseContext extends ParserRuleContext {
9710 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
9711 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
9712 		public List<OrderByItemContext> orderByItem() {
9713 			return getRuleContexts(OrderByItemContext.class);
9714 		}
9715 		public OrderByItemContext orderByItem(int i) {
9716 			return getRuleContext(OrderByItemContext.class,i);
9717 		}
9718 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9719 		public TerminalNode COMMA_(int i) {
9720 			return getToken(SQLServerStatementParser.COMMA_, i);
9721 		}
9722 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
9723 		public List<ExprContext> expr() {
9724 			return getRuleContexts(ExprContext.class);
9725 		}
9726 		public ExprContext expr(int i) {
9727 			return getRuleContext(ExprContext.class,i);
9728 		}
9729 		public List<TerminalNode> ROW() { return getTokens(SQLServerStatementParser.ROW); }
9730 		public TerminalNode ROW(int i) {
9731 			return getToken(SQLServerStatementParser.ROW, i);
9732 		}
9733 		public List<TerminalNode> ROWS() { return getTokens(SQLServerStatementParser.ROWS); }
9734 		public TerminalNode ROWS(int i) {
9735 			return getToken(SQLServerStatementParser.ROWS, i);
9736 		}
9737 		public TerminalNode FETCH() { return getToken(SQLServerStatementParser.FETCH, 0); }
9738 		public TerminalNode ONLY() { return getToken(SQLServerStatementParser.ONLY, 0); }
9739 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
9740 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
9741 		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
9742 			super(parent, invokingState);
9743 		}
9744 		@Override public int getRuleIndex() { return RULE_orderByClause; }
9745 		@Override
9746 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9747 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByClause(this);
9748 			else return visitor.visitChildren(this);
9749 		}
9750 	}
9751 
9752 	public final OrderByClauseContext orderByClause() throws RecognitionException {
9753 		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
9754 		enterRule(_localctx, 168, RULE_orderByClause);
9755 		int _la;
9756 		try {
9757 			enterOuterAlt(_localctx, 1);
9758 			{
9759 			setState(1803);
9760 			match(ORDER);
9761 			setState(1804);
9762 			match(BY);
9763 			setState(1805);
9764 			orderByItem();
9765 			setState(1810);
9766 			_errHandler.sync(this);
9767 			_la = _input.LA(1);
9768 			while (_la==COMMA_) {
9769 				{
9770 				{
9771 				setState(1806);
9772 				match(COMMA_);
9773 				setState(1807);
9774 				orderByItem();
9775 				}
9776 				}
9777 				setState(1812);
9778 				_errHandler.sync(this);
9779 				_la = _input.LA(1);
9780 			}
9781 			setState(1824);
9782 			_errHandler.sync(this);
9783 			_la = _input.LA(1);
9784 			if (_la==OFFSET) {
9785 				{
9786 				setState(1813);
9787 				match(OFFSET);
9788 				setState(1814);
9789 				expr(0);
9790 				setState(1815);
9791 				_la = _input.LA(1);
9792 				if ( !(_la==ROW || _la==ROWS) ) {
9793 				_errHandler.recoverInline(this);
9794 				}
9795 				else {
9796 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9797 					_errHandler.reportMatch(this);
9798 					consume();
9799 				}
9800 				setState(1822);
9801 				_errHandler.sync(this);
9802 				_la = _input.LA(1);
9803 				if (_la==FETCH) {
9804 					{
9805 					setState(1816);
9806 					match(FETCH);
9807 					setState(1817);
9808 					_la = _input.LA(1);
9809 					if ( !(_la==NEXT || _la==FIRST) ) {
9810 					_errHandler.recoverInline(this);
9811 					}
9812 					else {
9813 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9814 						_errHandler.reportMatch(this);
9815 						consume();
9816 					}
9817 					setState(1818);
9818 					expr(0);
9819 					setState(1819);
9820 					_la = _input.LA(1);
9821 					if ( !(_la==ROW || _la==ROWS) ) {
9822 					_errHandler.recoverInline(this);
9823 					}
9824 					else {
9825 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9826 						_errHandler.reportMatch(this);
9827 						consume();
9828 					}
9829 					setState(1820);
9830 					match(ONLY);
9831 					}
9832 				}
9833 
9834 				}
9835 			}
9836 
9837 			}
9838 		}
9839 		catch (RecognitionException re) {
9840 			_localctx.exception = re;
9841 			_errHandler.reportError(this, re);
9842 			_errHandler.recover(this, re);
9843 		}
9844 		finally {
9845 			exitRule();
9846 		}
9847 		return _localctx;
9848 	}
9849 
9850 	public static class OrderByItemContext extends ParserRuleContext {
9851 		public ColumnNameContext columnName() {
9852 			return getRuleContext(ColumnNameContext.class,0);
9853 		}
9854 		public NumberLiteralsContext numberLiterals() {
9855 			return getRuleContext(NumberLiteralsContext.class,0);
9856 		}
9857 		public ExprContext expr() {
9858 			return getRuleContext(ExprContext.class,0);
9859 		}
9860 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
9861 		public IdentifierContext identifier() {
9862 			return getRuleContext(IdentifierContext.class,0);
9863 		}
9864 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
9865 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
9866 		public OrderByItemContext(ParserRuleContext parent, int invokingState) {
9867 			super(parent, invokingState);
9868 		}
9869 		@Override public int getRuleIndex() { return RULE_orderByItem; }
9870 		@Override
9871 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9872 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByItem(this);
9873 			else return visitor.visitChildren(this);
9874 		}
9875 	}
9876 
9877 	public final OrderByItemContext orderByItem() throws RecognitionException {
9878 		OrderByItemContext _localctx = new OrderByItemContext(_ctx, getState());
9879 		enterRule(_localctx, 170, RULE_orderByItem);
9880 		int _la;
9881 		try {
9882 			enterOuterAlt(_localctx, 1);
9883 			{
9884 			setState(1829);
9885 			_errHandler.sync(this);
9886 			switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) {
9887 			case 1:
9888 				{
9889 				setState(1826);
9890 				columnName();
9891 				}
9892 				break;
9893 			case 2:
9894 				{
9895 				setState(1827);
9896 				numberLiterals();
9897 				}
9898 				break;
9899 			case 3:
9900 				{
9901 				setState(1828);
9902 				expr(0);
9903 				}
9904 				break;
9905 			}
9906 			setState(1833);
9907 			_errHandler.sync(this);
9908 			_la = _input.LA(1);
9909 			if (_la==COLLATE) {
9910 				{
9911 				setState(1831);
9912 				match(COLLATE);
9913 				setState(1832);
9914 				identifier();
9915 				}
9916 			}
9917 
9918 			setState(1836);
9919 			_errHandler.sync(this);
9920 			_la = _input.LA(1);
9921 			if (_la==ASC || _la==DESC) {
9922 				{
9923 				setState(1835);
9924 				_la = _input.LA(1);
9925 				if ( !(_la==ASC || _la==DESC) ) {
9926 				_errHandler.recoverInline(this);
9927 				}
9928 				else {
9929 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9930 					_errHandler.reportMatch(this);
9931 					consume();
9932 				}
9933 				}
9934 			}
9935 
9936 			}
9937 		}
9938 		catch (RecognitionException re) {
9939 			_localctx.exception = re;
9940 			_errHandler.reportError(this, re);
9941 			_errHandler.recover(this, re);
9942 		}
9943 		finally {
9944 			exitRule();
9945 		}
9946 		return _localctx;
9947 	}
9948 
9949 	public static class DataTypeContext extends ParserRuleContext {
9950 		public DataTypeNameContext dataTypeName() {
9951 			return getRuleContext(DataTypeNameContext.class,0);
9952 		}
9953 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
9954 			return getRuleContexts(IgnoredIdentifierContext.class);
9955 		}
9956 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
9957 			return getRuleContext(IgnoredIdentifierContext.class,i);
9958 		}
9959 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
9960 		public DataTypeLengthContext dataTypeLength() {
9961 			return getRuleContext(DataTypeLengthContext.class,0);
9962 		}
9963 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9964 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
9965 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9966 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
9967 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
9968 		public DataTypeContext(ParserRuleContext parent, int invokingState) {
9969 			super(parent, invokingState);
9970 		}
9971 		@Override public int getRuleIndex() { return RULE_dataType; }
9972 		@Override
9973 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9974 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataType(this);
9975 			else return visitor.visitChildren(this);
9976 		}
9977 	}
9978 
9979 	public final DataTypeContext dataType() throws RecognitionException {
9980 		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
9981 		enterRule(_localctx, 172, RULE_dataType);
9982 		int _la;
9983 		try {
9984 			enterOuterAlt(_localctx, 1);
9985 			{
9986 			setState(1841);
9987 			_errHandler.sync(this);
9988 			switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
9989 			case 1:
9990 				{
9991 				setState(1838);
9992 				ignoredIdentifier();
9993 				setState(1839);
9994 				match(DOT_);
9995 				}
9996 				break;
9997 			}
9998 			setState(1843);
9999 			dataTypeName();
10000 			setState(1855);
10001 			_errHandler.sync(this);
10002 			switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
10003 			case 1:
10004 				{
10005 				setState(1844);
10006 				dataTypeLength();
10007 				}
10008 				break;
10009 			case 2:
10010 				{
10011 				setState(1845);
10012 				match(LP_);
10013 				setState(1846);
10014 				match(MAX);
10015 				setState(1847);
10016 				match(RP_);
10017 				}
10018 				break;
10019 			case 3:
10020 				{
10021 				setState(1848);
10022 				match(LP_);
10023 				setState(1850);
10024 				_errHandler.sync(this);
10025 				_la = _input.LA(1);
10026 				if (_la==CONTENT || _la==DOCUMENT) {
10027 					{
10028 					setState(1849);
10029 					_la = _input.LA(1);
10030 					if ( !(_la==CONTENT || _la==DOCUMENT) ) {
10031 					_errHandler.recoverInline(this);
10032 					}
10033 					else {
10034 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10035 						_errHandler.reportMatch(this);
10036 						consume();
10037 					}
10038 					}
10039 				}
10040 
10041 				setState(1852);
10042 				ignoredIdentifier();
10043 				setState(1853);
10044 				match(RP_);
10045 				}
10046 				break;
10047 			}
10048 			}
10049 		}
10050 		catch (RecognitionException re) {
10051 			_localctx.exception = re;
10052 			_errHandler.reportError(this, re);
10053 			_errHandler.recover(this, re);
10054 		}
10055 		finally {
10056 			exitRule();
10057 		}
10058 		return _localctx;
10059 	}
10060 
10061 	public static class DataTypeNameContext extends ParserRuleContext {
10062 		public TerminalNode BIGINT() { return getToken(SQLServerStatementParser.BIGINT, 0); }
10063 		public TerminalNode NUMERIC() { return getToken(SQLServerStatementParser.NUMERIC, 0); }
10064 		public TerminalNode BIT() { return getToken(SQLServerStatementParser.BIT, 0); }
10065 		public TerminalNode SMALLINT() { return getToken(SQLServerStatementParser.SMALLINT, 0); }
10066 		public TerminalNode DECIMAL() { return getToken(SQLServerStatementParser.DECIMAL, 0); }
10067 		public TerminalNode SMALLMONEY() { return getToken(SQLServerStatementParser.SMALLMONEY, 0); }
10068 		public TerminalNode INT() { return getToken(SQLServerStatementParser.INT, 0); }
10069 		public TerminalNode TINYINT() { return getToken(SQLServerStatementParser.TINYINT, 0); }
10070 		public TerminalNode MONEY() { return getToken(SQLServerStatementParser.MONEY, 0); }
10071 		public TerminalNode FLOAT() { return getToken(SQLServerStatementParser.FLOAT, 0); }
10072 		public TerminalNode REAL() { return getToken(SQLServerStatementParser.REAL, 0); }
10073 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
10074 		public TerminalNode DATETIMEOFFSET() { return getToken(SQLServerStatementParser.DATETIMEOFFSET, 0); }
10075 		public TerminalNode SMALLDATETIME() { return getToken(SQLServerStatementParser.SMALLDATETIME, 0); }
10076 		public TerminalNode DATETIME() { return getToken(SQLServerStatementParser.DATETIME, 0); }
10077 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
10078 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
10079 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
10080 		public TerminalNode VARCHAR() { return getToken(SQLServerStatementParser.VARCHAR, 0); }
10081 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
10082 		public TerminalNode NCHAR() { return getToken(SQLServerStatementParser.NCHAR, 0); }
10083 		public TerminalNode NVARCHAR() { return getToken(SQLServerStatementParser.NVARCHAR, 0); }
10084 		public TerminalNode NTEXT() { return getToken(SQLServerStatementParser.NTEXT, 0); }
10085 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
10086 		public TerminalNode VARBINARY() { return getToken(SQLServerStatementParser.VARBINARY, 0); }
10087 		public TerminalNode IMAGE() { return getToken(SQLServerStatementParser.IMAGE, 0); }
10088 		public TerminalNode SQL_VARIANT() { return getToken(SQLServerStatementParser.SQL_VARIANT, 0); }
10089 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
10090 		public TerminalNode UNIQUEIDENTIFIER() { return getToken(SQLServerStatementParser.UNIQUEIDENTIFIER, 0); }
10091 		public TerminalNode HIERARCHYID() { return getToken(SQLServerStatementParser.HIERARCHYID, 0); }
10092 		public TerminalNode GEOMETRY() { return getToken(SQLServerStatementParser.GEOMETRY, 0); }
10093 		public TerminalNode GEOGRAPHY() { return getToken(SQLServerStatementParser.GEOGRAPHY, 0); }
10094 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
10095 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
10096 		public DataTypeNameContext(ParserRuleContext parent, int invokingState) {
10097 			super(parent, invokingState);
10098 		}
10099 		@Override public int getRuleIndex() { return RULE_dataTypeName; }
10100 		@Override
10101 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10102 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeName(this);
10103 			else return visitor.visitChildren(this);
10104 		}
10105 	}
10106 
10107 	public final DataTypeNameContext dataTypeName() throws RecognitionException {
10108 		DataTypeNameContext _localctx = new DataTypeNameContext(_ctx, getState());
10109 		enterRule(_localctx, 174, RULE_dataTypeName);
10110 		int _la;
10111 		try {
10112 			enterOuterAlt(_localctx, 1);
10113 			{
10114 			setState(1857);
10115 			_la = _input.LA(1);
10116 			if ( !(((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (CHAR - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (INTEGER - 131)) | (1L << (REAL - 131)) | (1L << (DECIMAL - 131)) | (1L << (BIT - 131)) | (1L << (SMALLINT - 131)) | (1L << (INT - 131)) | (1L << (TINYINT - 131)) | (1L << (NUMERIC - 131)) | (1L << (FLOAT - 131)) | (1L << (BIGINT - 131)) | (1L << (TEXT - 131)) | (1L << (VARCHAR - 131)))) != 0) || _la==BINARY || _la==XML || ((((_la - 449)) & ~0x3f) == 0 && ((1L << (_la - 449)) & ((1L << (MONEY - 449)) | (1L << (SMALLMONEY - 449)) | (1L << (DATETIMEOFFSET - 449)) | (1L << (DATETIME - 449)) | (1L << (DATETIME2 - 449)) | (1L << (SMALLDATETIME - 449)) | (1L << (NCHAR - 449)) | (1L << (NVARCHAR - 449)) | (1L << (NTEXT - 449)) | (1L << (VARBINARY - 449)) | (1L << (IMAGE - 449)) | (1L << (SQL_VARIANT - 449)) | (1L << (UNIQUEIDENTIFIER - 449)) | (1L << (HIERARCHYID - 449)) | (1L << (GEOMETRY - 449)) | (1L << (GEOGRAPHY - 449)))) != 0) || _la==IDENTIFIER_) ) {
10117 			_errHandler.recoverInline(this);
10118 			}
10119 			else {
10120 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10121 				_errHandler.reportMatch(this);
10122 				consume();
10123 			}
10124 			}
10125 		}
10126 		catch (RecognitionException re) {
10127 			_localctx.exception = re;
10128 			_errHandler.reportError(this, re);
10129 			_errHandler.recover(this, re);
10130 		}
10131 		finally {
10132 			exitRule();
10133 		}
10134 		return _localctx;
10135 	}
10136 
10137 	public static class AtTimeZoneExprContext extends ParserRuleContext {
10138 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
10139 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
10140 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
10141 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
10142 		public TerminalNode ZONE() { return getToken(SQLServerStatementParser.ZONE, 0); }
10143 		public AtTimeZoneExprContext(ParserRuleContext parent, int invokingState) {
10144 			super(parent, invokingState);
10145 		}
10146 		@Override public int getRuleIndex() { return RULE_atTimeZoneExpr; }
10147 		@Override
10148 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10149 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAtTimeZoneExpr(this);
10150 			else return visitor.visitChildren(this);
10151 		}
10152 	}
10153 
10154 	public final AtTimeZoneExprContext atTimeZoneExpr() throws RecognitionException {
10155 		AtTimeZoneExprContext _localctx = new AtTimeZoneExprContext(_ctx, getState());
10156 		enterRule(_localctx, 176, RULE_atTimeZoneExpr);
10157 		int _la;
10158 		try {
10159 			enterOuterAlt(_localctx, 1);
10160 			{
10161 			setState(1859);
10162 			match(IDENTIFIER_);
10163 			setState(1863);
10164 			_errHandler.sync(this);
10165 			_la = _input.LA(1);
10166 			if (_la==WITH) {
10167 				{
10168 				setState(1860);
10169 				match(WITH);
10170 				setState(1861);
10171 				match(TIME);
10172 				setState(1862);
10173 				match(ZONE);
10174 				}
10175 			}
10176 
10177 			setState(1865);
10178 			match(STRING_);
10179 			}
10180 		}
10181 		catch (RecognitionException re) {
10182 			_localctx.exception = re;
10183 			_errHandler.reportError(this, re);
10184 			_errHandler.recover(this, re);
10185 		}
10186 		finally {
10187 			exitRule();
10188 		}
10189 		return _localctx;
10190 	}
10191 
10192 	public static class CastExprContext extends ParserRuleContext {
10193 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
10194 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
10195 		public TerminalNode LP_(int i) {
10196 			return getToken(SQLServerStatementParser.LP_, i);
10197 		}
10198 		public ExprContext expr() {
10199 			return getRuleContext(ExprContext.class,0);
10200 		}
10201 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
10202 		public DataTypeContext dataType() {
10203 			return getRuleContext(DataTypeContext.class,0);
10204 		}
10205 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
10206 		public TerminalNode RP_(int i) {
10207 			return getToken(SQLServerStatementParser.RP_, i);
10208 		}
10209 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10210 		public CastExprContext(ParserRuleContext parent, int invokingState) {
10211 			super(parent, invokingState);
10212 		}
10213 		@Override public int getRuleIndex() { return RULE_castExpr; }
10214 		@Override
10215 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10216 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastExpr(this);
10217 			else return visitor.visitChildren(this);
10218 		}
10219 	}
10220 
10221 	public final CastExprContext castExpr() throws RecognitionException {
10222 		CastExprContext _localctx = new CastExprContext(_ctx, getState());
10223 		enterRule(_localctx, 178, RULE_castExpr);
10224 		int _la;
10225 		try {
10226 			enterOuterAlt(_localctx, 1);
10227 			{
10228 			setState(1867);
10229 			match(CAST);
10230 			setState(1868);
10231 			match(LP_);
10232 			setState(1869);
10233 			expr(0);
10234 			setState(1870);
10235 			match(AS);
10236 			setState(1871);
10237 			dataType();
10238 			setState(1875);
10239 			_errHandler.sync(this);
10240 			_la = _input.LA(1);
10241 			if (_la==LP_) {
10242 				{
10243 				setState(1872);
10244 				match(LP_);
10245 				setState(1873);
10246 				match(NUMBER_);
10247 				setState(1874);
10248 				match(RP_);
10249 				}
10250 			}
10251 
10252 			setState(1877);
10253 			match(RP_);
10254 			}
10255 		}
10256 		catch (RecognitionException re) {
10257 			_localctx.exception = re;
10258 			_errHandler.reportError(this, re);
10259 			_errHandler.recover(this, re);
10260 		}
10261 		finally {
10262 			exitRule();
10263 		}
10264 		return _localctx;
10265 	}
10266 
10267 	public static class ConvertExprContext extends ParserRuleContext {
10268 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
10269 		public DataTypeContext dataType() {
10270 			return getRuleContext(DataTypeContext.class,0);
10271 		}
10272 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10273 		public TerminalNode COMMA_(int i) {
10274 			return getToken(SQLServerStatementParser.COMMA_, i);
10275 		}
10276 		public ExprContext expr() {
10277 			return getRuleContext(ExprContext.class,0);
10278 		}
10279 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10280 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
10281 		public TerminalNode NUMBER_(int i) {
10282 			return getToken(SQLServerStatementParser.NUMBER_, i);
10283 		}
10284 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10285 		public ConvertExprContext(ParserRuleContext parent, int invokingState) {
10286 			super(parent, invokingState);
10287 		}
10288 		@Override public int getRuleIndex() { return RULE_convertExpr; }
10289 		@Override
10290 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10291 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertExpr(this);
10292 			else return visitor.visitChildren(this);
10293 		}
10294 	}
10295 
10296 	public final ConvertExprContext convertExpr() throws RecognitionException {
10297 		ConvertExprContext _localctx = new ConvertExprContext(_ctx, getState());
10298 		enterRule(_localctx, 180, RULE_convertExpr);
10299 		int _la;
10300 		try {
10301 			enterOuterAlt(_localctx, 1);
10302 			{
10303 			setState(1879);
10304 			match(CONVERT);
10305 			{
10306 			setState(1880);
10307 			dataType();
10308 			setState(1884);
10309 			_errHandler.sync(this);
10310 			_la = _input.LA(1);
10311 			if (_la==LP_) {
10312 				{
10313 				setState(1881);
10314 				match(LP_);
10315 				setState(1882);
10316 				match(NUMBER_);
10317 				setState(1883);
10318 				match(RP_);
10319 				}
10320 			}
10321 
10322 			setState(1886);
10323 			match(COMMA_);
10324 			setState(1887);
10325 			expr(0);
10326 			setState(1890);
10327 			_errHandler.sync(this);
10328 			switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) {
10329 			case 1:
10330 				{
10331 				setState(1888);
10332 				match(COMMA_);
10333 				setState(1889);
10334 				match(NUMBER_);
10335 				}
10336 				break;
10337 			}
10338 			}
10339 			}
10340 		}
10341 		catch (RecognitionException re) {
10342 			_localctx.exception = re;
10343 			_errHandler.reportError(this, re);
10344 			_errHandler.recover(this, re);
10345 		}
10346 		finally {
10347 			exitRule();
10348 		}
10349 		return _localctx;
10350 	}
10351 
10352 	public static class WindowFunctionContext extends ParserRuleContext {
10353 		public Token funcName;
10354 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10355 		public ExprContext expr() {
10356 			return getRuleContext(ExprContext.class,0);
10357 		}
10358 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10359 		public OverClauseContext overClause() {
10360 			return getRuleContext(OverClauseContext.class,0);
10361 		}
10362 		public TerminalNode FIRST_VALUE() { return getToken(SQLServerStatementParser.FIRST_VALUE, 0); }
10363 		public TerminalNode LAST_VALUE() { return getToken(SQLServerStatementParser.LAST_VALUE, 0); }
10364 		public NullTreatmentContext nullTreatment() {
10365 			return getRuleContext(NullTreatmentContext.class,0);
10366 		}
10367 		public WindowFunctionContext(ParserRuleContext parent, int invokingState) {
10368 			super(parent, invokingState);
10369 		}
10370 		@Override public int getRuleIndex() { return RULE_windowFunction; }
10371 		@Override
10372 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10373 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFunction(this);
10374 			else return visitor.visitChildren(this);
10375 		}
10376 	}
10377 
10378 	public final WindowFunctionContext windowFunction() throws RecognitionException {
10379 		WindowFunctionContext _localctx = new WindowFunctionContext(_ctx, getState());
10380 		enterRule(_localctx, 182, RULE_windowFunction);
10381 		int _la;
10382 		try {
10383 			enterOuterAlt(_localctx, 1);
10384 			{
10385 			setState(1892);
10386 			((WindowFunctionContext)_localctx).funcName = _input.LT(1);
10387 			_la = _input.LA(1);
10388 			if ( !(_la==FIRST_VALUE || _la==LAST_VALUE) ) {
10389 				((WindowFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
10390 			}
10391 			else {
10392 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10393 				_errHandler.reportMatch(this);
10394 				consume();
10395 			}
10396 			setState(1893);
10397 			match(LP_);
10398 			setState(1894);
10399 			expr(0);
10400 			setState(1895);
10401 			match(RP_);
10402 			setState(1897);
10403 			_errHandler.sync(this);
10404 			_la = _input.LA(1);
10405 			if (_la==RESPECT || _la==IGNORE) {
10406 				{
10407 				setState(1896);
10408 				nullTreatment();
10409 				}
10410 			}
10411 
10412 			setState(1899);
10413 			overClause();
10414 			}
10415 		}
10416 		catch (RecognitionException re) {
10417 			_localctx.exception = re;
10418 			_errHandler.reportError(this, re);
10419 			_errHandler.recover(this, re);
10420 		}
10421 		finally {
10422 			exitRule();
10423 		}
10424 		return _localctx;
10425 	}
10426 
10427 	public static class NullTreatmentContext extends ParserRuleContext {
10428 		public TerminalNode NULLS() { return getToken(SQLServerStatementParser.NULLS, 0); }
10429 		public TerminalNode RESPECT() { return getToken(SQLServerStatementParser.RESPECT, 0); }
10430 		public TerminalNode IGNORE() { return getToken(SQLServerStatementParser.IGNORE, 0); }
10431 		public NullTreatmentContext(ParserRuleContext parent, int invokingState) {
10432 			super(parent, invokingState);
10433 		}
10434 		@Override public int getRuleIndex() { return RULE_nullTreatment; }
10435 		@Override
10436 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10437 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullTreatment(this);
10438 			else return visitor.visitChildren(this);
10439 		}
10440 	}
10441 
10442 	public final NullTreatmentContext nullTreatment() throws RecognitionException {
10443 		NullTreatmentContext _localctx = new NullTreatmentContext(_ctx, getState());
10444 		enterRule(_localctx, 184, RULE_nullTreatment);
10445 		int _la;
10446 		try {
10447 			enterOuterAlt(_localctx, 1);
10448 			{
10449 			setState(1901);
10450 			_la = _input.LA(1);
10451 			if ( !(_la==RESPECT || _la==IGNORE) ) {
10452 			_errHandler.recoverInline(this);
10453 			}
10454 			else {
10455 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10456 				_errHandler.reportMatch(this);
10457 				consume();
10458 			}
10459 			setState(1902);
10460 			match(NULLS);
10461 			}
10462 		}
10463 		catch (RecognitionException re) {
10464 			_localctx.exception = re;
10465 			_errHandler.reportError(this, re);
10466 			_errHandler.recover(this, re);
10467 		}
10468 		finally {
10469 			exitRule();
10470 		}
10471 		return _localctx;
10472 	}
10473 
10474 	public static class OverClauseContext extends ParserRuleContext {
10475 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
10476 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10477 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10478 		public PartitionByClauseContext partitionByClause() {
10479 			return getRuleContext(PartitionByClauseContext.class,0);
10480 		}
10481 		public OrderByClauseContext orderByClause() {
10482 			return getRuleContext(OrderByClauseContext.class,0);
10483 		}
10484 		public RowRangeClauseContext rowRangeClause() {
10485 			return getRuleContext(RowRangeClauseContext.class,0);
10486 		}
10487 		public OverClauseContext(ParserRuleContext parent, int invokingState) {
10488 			super(parent, invokingState);
10489 		}
10490 		@Override public int getRuleIndex() { return RULE_overClause; }
10491 		@Override
10492 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10493 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOverClause(this);
10494 			else return visitor.visitChildren(this);
10495 		}
10496 	}
10497 
10498 	public final OverClauseContext overClause() throws RecognitionException {
10499 		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
10500 		enterRule(_localctx, 186, RULE_overClause);
10501 		int _la;
10502 		try {
10503 			enterOuterAlt(_localctx, 1);
10504 			{
10505 			setState(1904);
10506 			match(OVER);
10507 			setState(1905);
10508 			match(LP_);
10509 			setState(1907);
10510 			_errHandler.sync(this);
10511 			_la = _input.LA(1);
10512 			if (_la==PARTITION) {
10513 				{
10514 				setState(1906);
10515 				partitionByClause();
10516 				}
10517 			}
10518 
10519 			setState(1910);
10520 			_errHandler.sync(this);
10521 			_la = _input.LA(1);
10522 			if (_la==ORDER) {
10523 				{
10524 				setState(1909);
10525 				orderByClause();
10526 				}
10527 			}
10528 
10529 			setState(1913);
10530 			_errHandler.sync(this);
10531 			_la = _input.LA(1);
10532 			if (_la==ROWS || _la==RANGE) {
10533 				{
10534 				setState(1912);
10535 				rowRangeClause();
10536 				}
10537 			}
10538 
10539 			setState(1915);
10540 			match(RP_);
10541 			}
10542 		}
10543 		catch (RecognitionException re) {
10544 			_localctx.exception = re;
10545 			_errHandler.reportError(this, re);
10546 			_errHandler.recover(this, re);
10547 		}
10548 		finally {
10549 			exitRule();
10550 		}
10551 		return _localctx;
10552 	}
10553 
10554 	public static class PartitionByClauseContext extends ParserRuleContext {
10555 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
10556 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
10557 		public List<ExprContext> expr() {
10558 			return getRuleContexts(ExprContext.class);
10559 		}
10560 		public ExprContext expr(int i) {
10561 			return getRuleContext(ExprContext.class,i);
10562 		}
10563 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10564 		public TerminalNode COMMA_(int i) {
10565 			return getToken(SQLServerStatementParser.COMMA_, i);
10566 		}
10567 		public PartitionByClauseContext(ParserRuleContext parent, int invokingState) {
10568 			super(parent, invokingState);
10569 		}
10570 		@Override public int getRuleIndex() { return RULE_partitionByClause; }
10571 		@Override
10572 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10573 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionByClause(this);
10574 			else return visitor.visitChildren(this);
10575 		}
10576 	}
10577 
10578 	public final PartitionByClauseContext partitionByClause() throws RecognitionException {
10579 		PartitionByClauseContext _localctx = new PartitionByClauseContext(_ctx, getState());
10580 		enterRule(_localctx, 188, RULE_partitionByClause);
10581 		int _la;
10582 		try {
10583 			enterOuterAlt(_localctx, 1);
10584 			{
10585 			setState(1917);
10586 			match(PARTITION);
10587 			setState(1918);
10588 			match(BY);
10589 			setState(1919);
10590 			expr(0);
10591 			setState(1924);
10592 			_errHandler.sync(this);
10593 			_la = _input.LA(1);
10594 			while (_la==COMMA_) {
10595 				{
10596 				{
10597 				setState(1920);
10598 				match(COMMA_);
10599 				setState(1921);
10600 				expr(0);
10601 				}
10602 				}
10603 				setState(1926);
10604 				_errHandler.sync(this);
10605 				_la = _input.LA(1);
10606 			}
10607 			}
10608 		}
10609 		catch (RecognitionException re) {
10610 			_localctx.exception = re;
10611 			_errHandler.reportError(this, re);
10612 			_errHandler.recover(this, re);
10613 		}
10614 		finally {
10615 			exitRule();
10616 		}
10617 		return _localctx;
10618 	}
10619 
10620 	public static class RowRangeClauseContext extends ParserRuleContext {
10621 		public WindowFrameExtentContext windowFrameExtent() {
10622 			return getRuleContext(WindowFrameExtentContext.class,0);
10623 		}
10624 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
10625 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
10626 		public RowRangeClauseContext(ParserRuleContext parent, int invokingState) {
10627 			super(parent, invokingState);
10628 		}
10629 		@Override public int getRuleIndex() { return RULE_rowRangeClause; }
10630 		@Override
10631 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10632 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRowRangeClause(this);
10633 			else return visitor.visitChildren(this);
10634 		}
10635 	}
10636 
10637 	public final RowRangeClauseContext rowRangeClause() throws RecognitionException {
10638 		RowRangeClauseContext _localctx = new RowRangeClauseContext(_ctx, getState());
10639 		enterRule(_localctx, 190, RULE_rowRangeClause);
10640 		int _la;
10641 		try {
10642 			enterOuterAlt(_localctx, 1);
10643 			{
10644 			setState(1927);
10645 			_la = _input.LA(1);
10646 			if ( !(_la==ROWS || _la==RANGE) ) {
10647 			_errHandler.recoverInline(this);
10648 			}
10649 			else {
10650 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10651 				_errHandler.reportMatch(this);
10652 				consume();
10653 			}
10654 			setState(1928);
10655 			windowFrameExtent();
10656 			}
10657 		}
10658 		catch (RecognitionException re) {
10659 			_localctx.exception = re;
10660 			_errHandler.reportError(this, re);
10661 			_errHandler.recover(this, re);
10662 		}
10663 		finally {
10664 			exitRule();
10665 		}
10666 		return _localctx;
10667 	}
10668 
10669 	public static class WindowFrameExtentContext extends ParserRuleContext {
10670 		public WindowFramePrecedingContext windowFramePreceding() {
10671 			return getRuleContext(WindowFramePrecedingContext.class,0);
10672 		}
10673 		public WindowFrameBetweenContext windowFrameBetween() {
10674 			return getRuleContext(WindowFrameBetweenContext.class,0);
10675 		}
10676 		public WindowFrameExtentContext(ParserRuleContext parent, int invokingState) {
10677 			super(parent, invokingState);
10678 		}
10679 		@Override public int getRuleIndex() { return RULE_windowFrameExtent; }
10680 		@Override
10681 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10682 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameExtent(this);
10683 			else return visitor.visitChildren(this);
10684 		}
10685 	}
10686 
10687 	public final WindowFrameExtentContext windowFrameExtent() throws RecognitionException {
10688 		WindowFrameExtentContext _localctx = new WindowFrameExtentContext(_ctx, getState());
10689 		enterRule(_localctx, 192, RULE_windowFrameExtent);
10690 		try {
10691 			setState(1932);
10692 			_errHandler.sync(this);
10693 			switch (_input.LA(1)) {
10694 			case CURRENT:
10695 			case UNBOUNDED:
10696 			case NUMBER_:
10697 				enterOuterAlt(_localctx, 1);
10698 				{
10699 				setState(1930);
10700 				windowFramePreceding();
10701 				}
10702 				break;
10703 			case BETWEEN:
10704 				enterOuterAlt(_localctx, 2);
10705 				{
10706 				setState(1931);
10707 				windowFrameBetween();
10708 				}
10709 				break;
10710 			default:
10711 				throw new NoViableAltException(this);
10712 			}
10713 		}
10714 		catch (RecognitionException re) {
10715 			_localctx.exception = re;
10716 			_errHandler.reportError(this, re);
10717 			_errHandler.recover(this, re);
10718 		}
10719 		finally {
10720 			exitRule();
10721 		}
10722 		return _localctx;
10723 	}
10724 
10725 	public static class WindowFrameBetweenContext extends ParserRuleContext {
10726 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
10727 		public List<WindowFrameBoundContext> windowFrameBound() {
10728 			return getRuleContexts(WindowFrameBoundContext.class);
10729 		}
10730 		public WindowFrameBoundContext windowFrameBound(int i) {
10731 			return getRuleContext(WindowFrameBoundContext.class,i);
10732 		}
10733 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
10734 		public WindowFrameBetweenContext(ParserRuleContext parent, int invokingState) {
10735 			super(parent, invokingState);
10736 		}
10737 		@Override public int getRuleIndex() { return RULE_windowFrameBetween; }
10738 		@Override
10739 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10740 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBetween(this);
10741 			else return visitor.visitChildren(this);
10742 		}
10743 	}
10744 
10745 	public final WindowFrameBetweenContext windowFrameBetween() throws RecognitionException {
10746 		WindowFrameBetweenContext _localctx = new WindowFrameBetweenContext(_ctx, getState());
10747 		enterRule(_localctx, 194, RULE_windowFrameBetween);
10748 		try {
10749 			enterOuterAlt(_localctx, 1);
10750 			{
10751 			setState(1934);
10752 			match(BETWEEN);
10753 			setState(1935);
10754 			windowFrameBound();
10755 			setState(1936);
10756 			match(AND);
10757 			setState(1937);
10758 			windowFrameBound();
10759 			}
10760 		}
10761 		catch (RecognitionException re) {
10762 			_localctx.exception = re;
10763 			_errHandler.reportError(this, re);
10764 			_errHandler.recover(this, re);
10765 		}
10766 		finally {
10767 			exitRule();
10768 		}
10769 		return _localctx;
10770 	}
10771 
10772 	public static class WindowFrameBoundContext extends ParserRuleContext {
10773 		public WindowFramePrecedingContext windowFramePreceding() {
10774 			return getRuleContext(WindowFramePrecedingContext.class,0);
10775 		}
10776 		public WindowFrameFollowingContext windowFrameFollowing() {
10777 			return getRuleContext(WindowFrameFollowingContext.class,0);
10778 		}
10779 		public WindowFrameBoundContext(ParserRuleContext parent, int invokingState) {
10780 			super(parent, invokingState);
10781 		}
10782 		@Override public int getRuleIndex() { return RULE_windowFrameBound; }
10783 		@Override
10784 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10785 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBound(this);
10786 			else return visitor.visitChildren(this);
10787 		}
10788 	}
10789 
10790 	public final WindowFrameBoundContext windowFrameBound() throws RecognitionException {
10791 		WindowFrameBoundContext _localctx = new WindowFrameBoundContext(_ctx, getState());
10792 		enterRule(_localctx, 196, RULE_windowFrameBound);
10793 		try {
10794 			setState(1941);
10795 			_errHandler.sync(this);
10796 			switch ( getInterpreter().adaptivePredict(_input,116,_ctx) ) {
10797 			case 1:
10798 				enterOuterAlt(_localctx, 1);
10799 				{
10800 				setState(1939);
10801 				windowFramePreceding();
10802 				}
10803 				break;
10804 			case 2:
10805 				enterOuterAlt(_localctx, 2);
10806 				{
10807 				setState(1940);
10808 				windowFrameFollowing();
10809 				}
10810 				break;
10811 			}
10812 		}
10813 		catch (RecognitionException re) {
10814 			_localctx.exception = re;
10815 			_errHandler.reportError(this, re);
10816 			_errHandler.recover(this, re);
10817 		}
10818 		finally {
10819 			exitRule();
10820 		}
10821 		return _localctx;
10822 	}
10823 
10824 	public static class WindowFramePrecedingContext extends ParserRuleContext {
10825 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
10826 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
10827 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10828 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
10829 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
10830 		public WindowFramePrecedingContext(ParserRuleContext parent, int invokingState) {
10831 			super(parent, invokingState);
10832 		}
10833 		@Override public int getRuleIndex() { return RULE_windowFramePreceding; }
10834 		@Override
10835 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10836 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFramePreceding(this);
10837 			else return visitor.visitChildren(this);
10838 		}
10839 	}
10840 
10841 	public final WindowFramePrecedingContext windowFramePreceding() throws RecognitionException {
10842 		WindowFramePrecedingContext _localctx = new WindowFramePrecedingContext(_ctx, getState());
10843 		enterRule(_localctx, 198, RULE_windowFramePreceding);
10844 		try {
10845 			setState(1949);
10846 			_errHandler.sync(this);
10847 			switch (_input.LA(1)) {
10848 			case UNBOUNDED:
10849 				enterOuterAlt(_localctx, 1);
10850 				{
10851 				setState(1943);
10852 				match(UNBOUNDED);
10853 				setState(1944);
10854 				match(PRECEDING);
10855 				}
10856 				break;
10857 			case NUMBER_:
10858 				enterOuterAlt(_localctx, 2);
10859 				{
10860 				setState(1945);
10861 				match(NUMBER_);
10862 				setState(1946);
10863 				match(PRECEDING);
10864 				}
10865 				break;
10866 			case CURRENT:
10867 				enterOuterAlt(_localctx, 3);
10868 				{
10869 				setState(1947);
10870 				match(CURRENT);
10871 				setState(1948);
10872 				match(ROW);
10873 				}
10874 				break;
10875 			default:
10876 				throw new NoViableAltException(this);
10877 			}
10878 		}
10879 		catch (RecognitionException re) {
10880 			_localctx.exception = re;
10881 			_errHandler.reportError(this, re);
10882 			_errHandler.recover(this, re);
10883 		}
10884 		finally {
10885 			exitRule();
10886 		}
10887 		return _localctx;
10888 	}
10889 
10890 	public static class WindowFrameFollowingContext extends ParserRuleContext {
10891 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
10892 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
10893 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10894 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
10895 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
10896 		public WindowFrameFollowingContext(ParserRuleContext parent, int invokingState) {
10897 			super(parent, invokingState);
10898 		}
10899 		@Override public int getRuleIndex() { return RULE_windowFrameFollowing; }
10900 		@Override
10901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameFollowing(this);
10903 			else return visitor.visitChildren(this);
10904 		}
10905 	}
10906 
10907 	public final WindowFrameFollowingContext windowFrameFollowing() throws RecognitionException {
10908 		WindowFrameFollowingContext _localctx = new WindowFrameFollowingContext(_ctx, getState());
10909 		enterRule(_localctx, 200, RULE_windowFrameFollowing);
10910 		try {
10911 			setState(1957);
10912 			_errHandler.sync(this);
10913 			switch (_input.LA(1)) {
10914 			case UNBOUNDED:
10915 				enterOuterAlt(_localctx, 1);
10916 				{
10917 				setState(1951);
10918 				match(UNBOUNDED);
10919 				setState(1952);
10920 				match(FOLLOWING);
10921 				}
10922 				break;
10923 			case NUMBER_:
10924 				enterOuterAlt(_localctx, 2);
10925 				{
10926 				setState(1953);
10927 				match(NUMBER_);
10928 				setState(1954);
10929 				match(FOLLOWING);
10930 				}
10931 				break;
10932 			case CURRENT:
10933 				enterOuterAlt(_localctx, 3);
10934 				{
10935 				setState(1955);
10936 				match(CURRENT);
10937 				setState(1956);
10938 				match(ROW);
10939 				}
10940 				break;
10941 			default:
10942 				throw new NoViableAltException(this);
10943 			}
10944 		}
10945 		catch (RecognitionException re) {
10946 			_localctx.exception = re;
10947 			_errHandler.reportError(this, re);
10948 			_errHandler.recover(this, re);
10949 		}
10950 		finally {
10951 			exitRule();
10952 		}
10953 		return _localctx;
10954 	}
10955 
10956 	public static class ColumnNameWithSortContext extends ParserRuleContext {
10957 		public ColumnNameContext columnName() {
10958 			return getRuleContext(ColumnNameContext.class,0);
10959 		}
10960 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
10961 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
10962 		public ColumnNameWithSortContext(ParserRuleContext parent, int invokingState) {
10963 			super(parent, invokingState);
10964 		}
10965 		@Override public int getRuleIndex() { return RULE_columnNameWithSort; }
10966 		@Override
10967 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10968 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNameWithSort(this);
10969 			else return visitor.visitChildren(this);
10970 		}
10971 	}
10972 
10973 	public final ColumnNameWithSortContext columnNameWithSort() throws RecognitionException {
10974 		ColumnNameWithSortContext _localctx = new ColumnNameWithSortContext(_ctx, getState());
10975 		enterRule(_localctx, 202, RULE_columnNameWithSort);
10976 		int _la;
10977 		try {
10978 			enterOuterAlt(_localctx, 1);
10979 			{
10980 			setState(1959);
10981 			columnName();
10982 			setState(1961);
10983 			_errHandler.sync(this);
10984 			_la = _input.LA(1);
10985 			if (_la==ASC || _la==DESC) {
10986 				{
10987 				setState(1960);
10988 				_la = _input.LA(1);
10989 				if ( !(_la==ASC || _la==DESC) ) {
10990 				_errHandler.recoverInline(this);
10991 				}
10992 				else {
10993 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10994 					_errHandler.reportMatch(this);
10995 					consume();
10996 				}
10997 				}
10998 			}
10999 
11000 			}
11001 		}
11002 		catch (RecognitionException re) {
11003 			_localctx.exception = re;
11004 			_errHandler.reportError(this, re);
11005 			_errHandler.recover(this, re);
11006 		}
11007 		finally {
11008 			exitRule();
11009 		}
11010 		return _localctx;
11011 	}
11012 
11013 	public static class IndexOptionContext extends ParserRuleContext {
11014 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
11015 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11016 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11017 		public EqOnOffOptionContext eqOnOffOption() {
11018 			return getRuleContext(EqOnOffOptionContext.class,0);
11019 		}
11020 		public EqTimeContext eqTime() {
11021 			return getRuleContext(EqTimeContext.class,0);
11022 		}
11023 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
11024 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
11025 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
11026 		public CompressionOptionContext compressionOption() {
11027 			return getRuleContext(CompressionOptionContext.class,0);
11028 		}
11029 		public OnPartitionClauseContext onPartitionClause() {
11030 			return getRuleContext(OnPartitionClauseContext.class,0);
11031 		}
11032 		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
11033 			super(parent, invokingState);
11034 		}
11035 		@Override public int getRuleIndex() { return RULE_indexOption; }
11036 		@Override
11037 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11038 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOption(this);
11039 			else return visitor.visitChildren(this);
11040 		}
11041 	}
11042 
11043 	public final IndexOptionContext indexOption() throws RecognitionException {
11044 		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
11045 		enterRule(_localctx, 204, RULE_indexOption);
11046 		int _la;
11047 		try {
11048 			setState(1976);
11049 			_errHandler.sync(this);
11050 			switch ( getInterpreter().adaptivePredict(_input,121,_ctx) ) {
11051 			case 1:
11052 				enterOuterAlt(_localctx, 1);
11053 				{
11054 				setState(1963);
11055 				match(FILLFACTOR);
11056 				setState(1964);
11057 				match(EQ_);
11058 				setState(1965);
11059 				match(NUMBER_);
11060 				}
11061 				break;
11062 			case 2:
11063 				enterOuterAlt(_localctx, 2);
11064 				{
11065 				setState(1966);
11066 				eqOnOffOption();
11067 				}
11068 				break;
11069 			case 3:
11070 				enterOuterAlt(_localctx, 3);
11071 				{
11072 				setState(1967);
11073 				_la = _input.LA(1);
11074 				if ( !(_la==COMPRESSION_DELAY || _la==MAX_DURATION) ) {
11075 				_errHandler.recoverInline(this);
11076 				}
11077 				else {
11078 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11079 					_errHandler.reportMatch(this);
11080 					consume();
11081 				}
11082 				setState(1968);
11083 				eqTime();
11084 				}
11085 				break;
11086 			case 4:
11087 				enterOuterAlt(_localctx, 4);
11088 				{
11089 				setState(1969);
11090 				match(MAXDOP);
11091 				setState(1970);
11092 				match(EQ_);
11093 				setState(1971);
11094 				match(NUMBER_);
11095 				}
11096 				break;
11097 			case 5:
11098 				enterOuterAlt(_localctx, 5);
11099 				{
11100 				setState(1972);
11101 				compressionOption();
11102 				setState(1974);
11103 				_errHandler.sync(this);
11104 				_la = _input.LA(1);
11105 				if (_la==ON) {
11106 					{
11107 					setState(1973);
11108 					onPartitionClause();
11109 					}
11110 				}
11111 
11112 				}
11113 				break;
11114 			}
11115 		}
11116 		catch (RecognitionException re) {
11117 			_localctx.exception = re;
11118 			_errHandler.reportError(this, re);
11119 			_errHandler.recover(this, re);
11120 		}
11121 		finally {
11122 			exitRule();
11123 		}
11124 		return _localctx;
11125 	}
11126 
11127 	public static class CompressionOptionContext extends ParserRuleContext {
11128 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
11129 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11130 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
11131 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
11132 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
11133 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
11134 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
11135 		public CompressionOptionContext(ParserRuleContext parent, int invokingState) {
11136 			super(parent, invokingState);
11137 		}
11138 		@Override public int getRuleIndex() { return RULE_compressionOption; }
11139 		@Override
11140 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11141 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompressionOption(this);
11142 			else return visitor.visitChildren(this);
11143 		}
11144 	}
11145 
11146 	public final CompressionOptionContext compressionOption() throws RecognitionException {
11147 		CompressionOptionContext _localctx = new CompressionOptionContext(_ctx, getState());
11148 		enterRule(_localctx, 206, RULE_compressionOption);
11149 		int _la;
11150 		try {
11151 			enterOuterAlt(_localctx, 1);
11152 			{
11153 			setState(1978);
11154 			match(DATA_COMPRESSION);
11155 			setState(1979);
11156 			match(EQ_);
11157 			setState(1980);
11158 			_la = _input.LA(1);
11159 			if ( !(((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (NONE - 248)) | (1L << (PAGE - 248)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
11160 			_errHandler.recoverInline(this);
11161 			}
11162 			else {
11163 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11164 				_errHandler.reportMatch(this);
11165 				consume();
11166 			}
11167 			}
11168 		}
11169 		catch (RecognitionException re) {
11170 			_localctx.exception = re;
11171 			_errHandler.reportError(this, re);
11172 			_errHandler.recover(this, re);
11173 		}
11174 		finally {
11175 			exitRule();
11176 		}
11177 		return _localctx;
11178 	}
11179 
11180 	public static class EqTimeContext extends ParserRuleContext {
11181 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11182 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11183 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
11184 		public EqTimeContext(ParserRuleContext parent, int invokingState) {
11185 			super(parent, invokingState);
11186 		}
11187 		@Override public int getRuleIndex() { return RULE_eqTime; }
11188 		@Override
11189 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11190 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqTime(this);
11191 			else return visitor.visitChildren(this);
11192 		}
11193 	}
11194 
11195 	public final EqTimeContext eqTime() throws RecognitionException {
11196 		EqTimeContext _localctx = new EqTimeContext(_ctx, getState());
11197 		enterRule(_localctx, 208, RULE_eqTime);
11198 		int _la;
11199 		try {
11200 			enterOuterAlt(_localctx, 1);
11201 			{
11202 			setState(1982);
11203 			match(EQ_);
11204 			setState(1983);
11205 			match(NUMBER_);
11206 			setState(1985);
11207 			_errHandler.sync(this);
11208 			_la = _input.LA(1);
11209 			if (_la==MINUTES) {
11210 				{
11211 				setState(1984);
11212 				match(MINUTES);
11213 				}
11214 			}
11215 
11216 			}
11217 		}
11218 		catch (RecognitionException re) {
11219 			_localctx.exception = re;
11220 			_errHandler.reportError(this, re);
11221 			_errHandler.recover(this, re);
11222 		}
11223 		finally {
11224 			exitRule();
11225 		}
11226 		return _localctx;
11227 	}
11228 
11229 	public static class EqOnOffOptionContext extends ParserRuleContext {
11230 		public EqKeyContext eqKey() {
11231 			return getRuleContext(EqKeyContext.class,0);
11232 		}
11233 		public EqOnOffContext eqOnOff() {
11234 			return getRuleContext(EqOnOffContext.class,0);
11235 		}
11236 		public EqOnOffOptionContext(ParserRuleContext parent, int invokingState) {
11237 			super(parent, invokingState);
11238 		}
11239 		@Override public int getRuleIndex() { return RULE_eqOnOffOption; }
11240 		@Override
11241 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11242 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOffOption(this);
11243 			else return visitor.visitChildren(this);
11244 		}
11245 	}
11246 
11247 	public final EqOnOffOptionContext eqOnOffOption() throws RecognitionException {
11248 		EqOnOffOptionContext _localctx = new EqOnOffOptionContext(_ctx, getState());
11249 		enterRule(_localctx, 210, RULE_eqOnOffOption);
11250 		try {
11251 			enterOuterAlt(_localctx, 1);
11252 			{
11253 			setState(1987);
11254 			eqKey();
11255 			setState(1988);
11256 			eqOnOff();
11257 			}
11258 		}
11259 		catch (RecognitionException re) {
11260 			_localctx.exception = re;
11261 			_errHandler.reportError(this, re);
11262 			_errHandler.recover(this, re);
11263 		}
11264 		finally {
11265 			exitRule();
11266 		}
11267 		return _localctx;
11268 	}
11269 
11270 	public static class EqKeyContext extends ParserRuleContext {
11271 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
11272 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
11273 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
11274 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
11275 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
11276 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
11277 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
11278 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
11279 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
11280 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
11281 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
11282 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
11283 		public EqKeyContext(ParserRuleContext parent, int invokingState) {
11284 			super(parent, invokingState);
11285 		}
11286 		@Override public int getRuleIndex() { return RULE_eqKey; }
11287 		@Override
11288 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11289 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqKey(this);
11290 			else return visitor.visitChildren(this);
11291 		}
11292 	}
11293 
11294 	public final EqKeyContext eqKey() throws RecognitionException {
11295 		EqKeyContext _localctx = new EqKeyContext(_ctx, getState());
11296 		enterRule(_localctx, 212, RULE_eqKey);
11297 		int _la;
11298 		try {
11299 			enterOuterAlt(_localctx, 1);
11300 			{
11301 			setState(1990);
11302 			_la = _input.LA(1);
11303 			if ( !(_la==ONLINE || _la==RESUMABLE || ((((_la - 405)) & ~0x3f) == 0 && ((1L << (_la - 405)) & ((1L << (ALLOW_PAGE_LOCKS - 405)) | (1L << (ALLOW_ROW_LOCKS - 405)) | (1L << (COMPRESSION_DELAY - 405)) | (1L << (STATISTICS_INCREMENTAL - 405)) | (1L << (STATISTICS_NORECOMPUTE - 405)) | (1L << (SORT_IN_TEMPDB - 405)) | (1L << (IGNORE_DUP_KEY - 405)) | (1L << (PAD_INDEX - 405)) | (1L << (DROP_EXISTING - 405)))) != 0) || _la==OPTIMIZE_FOR_SEQUENTIAL_KEY) ) {
11304 			_errHandler.recoverInline(this);
11305 			}
11306 			else {
11307 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11308 				_errHandler.reportMatch(this);
11309 				consume();
11310 			}
11311 			}
11312 		}
11313 		catch (RecognitionException re) {
11314 			_localctx.exception = re;
11315 			_errHandler.reportError(this, re);
11316 			_errHandler.recover(this, re);
11317 		}
11318 		finally {
11319 			exitRule();
11320 		}
11321 		return _localctx;
11322 	}
11323 
11324 	public static class EqOnOffContext extends ParserRuleContext {
11325 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11326 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11327 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
11328 		public EqOnOffContext(ParserRuleContext parent, int invokingState) {
11329 			super(parent, invokingState);
11330 		}
11331 		@Override public int getRuleIndex() { return RULE_eqOnOff; }
11332 		@Override
11333 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11334 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOff(this);
11335 			else return visitor.visitChildren(this);
11336 		}
11337 	}
11338 
11339 	public final EqOnOffContext eqOnOff() throws RecognitionException {
11340 		EqOnOffContext _localctx = new EqOnOffContext(_ctx, getState());
11341 		enterRule(_localctx, 214, RULE_eqOnOff);
11342 		int _la;
11343 		try {
11344 			enterOuterAlt(_localctx, 1);
11345 			{
11346 			setState(1992);
11347 			match(EQ_);
11348 			setState(1993);
11349 			_la = _input.LA(1);
11350 			if ( !(_la==ON || _la==OFF) ) {
11351 			_errHandler.recoverInline(this);
11352 			}
11353 			else {
11354 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11355 				_errHandler.reportMatch(this);
11356 				consume();
11357 			}
11358 			}
11359 		}
11360 		catch (RecognitionException re) {
11361 			_localctx.exception = re;
11362 			_errHandler.reportError(this, re);
11363 			_errHandler.recover(this, re);
11364 		}
11365 		finally {
11366 			exitRule();
11367 		}
11368 		return _localctx;
11369 	}
11370 
11371 	public static class OnPartitionClauseContext extends ParserRuleContext {
11372 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11373 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
11374 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
11375 		public PartitionExpressionsContext partitionExpressions() {
11376 			return getRuleContext(PartitionExpressionsContext.class,0);
11377 		}
11378 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
11379 		public OnPartitionClauseContext(ParserRuleContext parent, int invokingState) {
11380 			super(parent, invokingState);
11381 		}
11382 		@Override public int getRuleIndex() { return RULE_onPartitionClause; }
11383 		@Override
11384 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11385 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnPartitionClause(this);
11386 			else return visitor.visitChildren(this);
11387 		}
11388 	}
11389 
11390 	public final OnPartitionClauseContext onPartitionClause() throws RecognitionException {
11391 		OnPartitionClauseContext _localctx = new OnPartitionClauseContext(_ctx, getState());
11392 		enterRule(_localctx, 216, RULE_onPartitionClause);
11393 		try {
11394 			enterOuterAlt(_localctx, 1);
11395 			{
11396 			setState(1995);
11397 			match(ON);
11398 			setState(1996);
11399 			match(PARTITIONS);
11400 			setState(1997);
11401 			match(LP_);
11402 			setState(1998);
11403 			partitionExpressions();
11404 			setState(1999);
11405 			match(RP_);
11406 			}
11407 		}
11408 		catch (RecognitionException re) {
11409 			_localctx.exception = re;
11410 			_errHandler.reportError(this, re);
11411 			_errHandler.recover(this, re);
11412 		}
11413 		finally {
11414 			exitRule();
11415 		}
11416 		return _localctx;
11417 	}
11418 
11419 	public static class PartitionExpressionsContext extends ParserRuleContext {
11420 		public List<PartitionExpressionContext> partitionExpression() {
11421 			return getRuleContexts(PartitionExpressionContext.class);
11422 		}
11423 		public PartitionExpressionContext partitionExpression(int i) {
11424 			return getRuleContext(PartitionExpressionContext.class,i);
11425 		}
11426 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11427 		public TerminalNode COMMA_(int i) {
11428 			return getToken(SQLServerStatementParser.COMMA_, i);
11429 		}
11430 		public PartitionExpressionsContext(ParserRuleContext parent, int invokingState) {
11431 			super(parent, invokingState);
11432 		}
11433 		@Override public int getRuleIndex() { return RULE_partitionExpressions; }
11434 		@Override
11435 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11436 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpressions(this);
11437 			else return visitor.visitChildren(this);
11438 		}
11439 	}
11440 
11441 	public final PartitionExpressionsContext partitionExpressions() throws RecognitionException {
11442 		PartitionExpressionsContext _localctx = new PartitionExpressionsContext(_ctx, getState());
11443 		enterRule(_localctx, 218, RULE_partitionExpressions);
11444 		int _la;
11445 		try {
11446 			enterOuterAlt(_localctx, 1);
11447 			{
11448 			setState(2001);
11449 			partitionExpression();
11450 			setState(2006);
11451 			_errHandler.sync(this);
11452 			_la = _input.LA(1);
11453 			while (_la==COMMA_) {
11454 				{
11455 				{
11456 				setState(2002);
11457 				match(COMMA_);
11458 				setState(2003);
11459 				partitionExpression();
11460 				}
11461 				}
11462 				setState(2008);
11463 				_errHandler.sync(this);
11464 				_la = _input.LA(1);
11465 			}
11466 			}
11467 		}
11468 		catch (RecognitionException re) {
11469 			_localctx.exception = re;
11470 			_errHandler.reportError(this, re);
11471 			_errHandler.recover(this, re);
11472 		}
11473 		finally {
11474 			exitRule();
11475 		}
11476 		return _localctx;
11477 	}
11478 
11479 	public static class PartitionExpressionContext extends ParserRuleContext {
11480 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11481 		public NumberRangeContext numberRange() {
11482 			return getRuleContext(NumberRangeContext.class,0);
11483 		}
11484 		public PartitionExpressionContext(ParserRuleContext parent, int invokingState) {
11485 			super(parent, invokingState);
11486 		}
11487 		@Override public int getRuleIndex() { return RULE_partitionExpression; }
11488 		@Override
11489 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11490 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpression(this);
11491 			else return visitor.visitChildren(this);
11492 		}
11493 	}
11494 
11495 	public final PartitionExpressionContext partitionExpression() throws RecognitionException {
11496 		PartitionExpressionContext _localctx = new PartitionExpressionContext(_ctx, getState());
11497 		enterRule(_localctx, 220, RULE_partitionExpression);
11498 		try {
11499 			setState(2011);
11500 			_errHandler.sync(this);
11501 			switch ( getInterpreter().adaptivePredict(_input,124,_ctx) ) {
11502 			case 1:
11503 				enterOuterAlt(_localctx, 1);
11504 				{
11505 				setState(2009);
11506 				match(NUMBER_);
11507 				}
11508 				break;
11509 			case 2:
11510 				enterOuterAlt(_localctx, 2);
11511 				{
11512 				setState(2010);
11513 				numberRange();
11514 				}
11515 				break;
11516 			}
11517 		}
11518 		catch (RecognitionException re) {
11519 			_localctx.exception = re;
11520 			_errHandler.reportError(this, re);
11521 			_errHandler.recover(this, re);
11522 		}
11523 		finally {
11524 			exitRule();
11525 		}
11526 		return _localctx;
11527 	}
11528 
11529 	public static class NumberRangeContext extends ParserRuleContext {
11530 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
11531 		public TerminalNode NUMBER_(int i) {
11532 			return getToken(SQLServerStatementParser.NUMBER_, i);
11533 		}
11534 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
11535 		public NumberRangeContext(ParserRuleContext parent, int invokingState) {
11536 			super(parent, invokingState);
11537 		}
11538 		@Override public int getRuleIndex() { return RULE_numberRange; }
11539 		@Override
11540 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11541 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberRange(this);
11542 			else return visitor.visitChildren(this);
11543 		}
11544 	}
11545 
11546 	public final NumberRangeContext numberRange() throws RecognitionException {
11547 		NumberRangeContext _localctx = new NumberRangeContext(_ctx, getState());
11548 		enterRule(_localctx, 222, RULE_numberRange);
11549 		try {
11550 			enterOuterAlt(_localctx, 1);
11551 			{
11552 			setState(2013);
11553 			match(NUMBER_);
11554 			setState(2014);
11555 			match(TO);
11556 			setState(2015);
11557 			match(NUMBER_);
11558 			}
11559 		}
11560 		catch (RecognitionException re) {
11561 			_localctx.exception = re;
11562 			_errHandler.reportError(this, re);
11563 			_errHandler.recover(this, re);
11564 		}
11565 		finally {
11566 			exitRule();
11567 		}
11568 		return _localctx;
11569 	}
11570 
11571 	public static class LowPriorityLockWaitContext extends ParserRuleContext {
11572 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
11573 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
11574 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
11575 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
11576 		public TerminalNode EQ_(int i) {
11577 			return getToken(SQLServerStatementParser.EQ_, i);
11578 		}
11579 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11580 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
11581 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
11582 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
11583 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
11584 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
11585 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
11586 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
11587 		public LowPriorityLockWaitContext(ParserRuleContext parent, int invokingState) {
11588 			super(parent, invokingState);
11589 		}
11590 		@Override public int getRuleIndex() { return RULE_lowPriorityLockWait; }
11591 		@Override
11592 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11593 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLowPriorityLockWait(this);
11594 			else return visitor.visitChildren(this);
11595 		}
11596 	}
11597 
11598 	public final LowPriorityLockWaitContext lowPriorityLockWait() throws RecognitionException {
11599 		LowPriorityLockWaitContext _localctx = new LowPriorityLockWaitContext(_ctx, getState());
11600 		enterRule(_localctx, 224, RULE_lowPriorityLockWait);
11601 		int _la;
11602 		try {
11603 			enterOuterAlt(_localctx, 1);
11604 			{
11605 			setState(2017);
11606 			match(WAIT_AT_LOW_PRIORITY);
11607 			setState(2018);
11608 			match(LP_);
11609 			setState(2019);
11610 			match(MAX_DURATION);
11611 			setState(2020);
11612 			match(EQ_);
11613 			setState(2021);
11614 			match(NUMBER_);
11615 			setState(2023);
11616 			_errHandler.sync(this);
11617 			_la = _input.LA(1);
11618 			if (_la==MINUTES) {
11619 				{
11620 				setState(2022);
11621 				match(MINUTES);
11622 				}
11623 			}
11624 
11625 			setState(2025);
11626 			match(COMMA_);
11627 			setState(2026);
11628 			match(ABORT_AFTER_WAIT);
11629 			setState(2027);
11630 			match(EQ_);
11631 			setState(2028);
11632 			_la = _input.LA(1);
11633 			if ( !(((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (BLOCKERS - 267)) | (1L << (NONE - 267)) | (1L << (SELF - 267)))) != 0)) ) {
11634 			_errHandler.recoverInline(this);
11635 			}
11636 			else {
11637 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11638 				_errHandler.reportMatch(this);
11639 				consume();
11640 			}
11641 			setState(2029);
11642 			match(RP_);
11643 			}
11644 		}
11645 		catch (RecognitionException re) {
11646 			_localctx.exception = re;
11647 			_errHandler.reportError(this, re);
11648 			_errHandler.recover(this, re);
11649 		}
11650 		finally {
11651 			exitRule();
11652 		}
11653 		return _localctx;
11654 	}
11655 
11656 	public static class OnLowPriorLockWaitContext extends ParserRuleContext {
11657 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11658 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
11659 		public LowPriorityLockWaitContext lowPriorityLockWait() {
11660 			return getRuleContext(LowPriorityLockWaitContext.class,0);
11661 		}
11662 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
11663 		public OnLowPriorLockWaitContext(ParserRuleContext parent, int invokingState) {
11664 			super(parent, invokingState);
11665 		}
11666 		@Override public int getRuleIndex() { return RULE_onLowPriorLockWait; }
11667 		@Override
11668 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11669 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnLowPriorLockWait(this);
11670 			else return visitor.visitChildren(this);
11671 		}
11672 	}
11673 
11674 	public final OnLowPriorLockWaitContext onLowPriorLockWait() throws RecognitionException {
11675 		OnLowPriorLockWaitContext _localctx = new OnLowPriorLockWaitContext(_ctx, getState());
11676 		enterRule(_localctx, 226, RULE_onLowPriorLockWait);
11677 		int _la;
11678 		try {
11679 			enterOuterAlt(_localctx, 1);
11680 			{
11681 			setState(2031);
11682 			match(ON);
11683 			setState(2036);
11684 			_errHandler.sync(this);
11685 			_la = _input.LA(1);
11686 			if (_la==LP_) {
11687 				{
11688 				setState(2032);
11689 				match(LP_);
11690 				setState(2033);
11691 				lowPriorityLockWait();
11692 				setState(2034);
11693 				match(RP_);
11694 				}
11695 			}
11696 
11697 			}
11698 		}
11699 		catch (RecognitionException re) {
11700 			_localctx.exception = re;
11701 			_errHandler.reportError(this, re);
11702 			_errHandler.recover(this, re);
11703 		}
11704 		finally {
11705 			exitRule();
11706 		}
11707 		return _localctx;
11708 	}
11709 
11710 	public static class IgnoredIdentifierContext extends ParserRuleContext {
11711 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
11712 		public IgnoredIdentifierContext(ParserRuleContext parent, int invokingState) {
11713 			super(parent, invokingState);
11714 		}
11715 		@Override public int getRuleIndex() { return RULE_ignoredIdentifier; }
11716 		@Override
11717 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11718 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifier(this);
11719 			else return visitor.visitChildren(this);
11720 		}
11721 	}
11722 
11723 	public final IgnoredIdentifierContext ignoredIdentifier() throws RecognitionException {
11724 		IgnoredIdentifierContext _localctx = new IgnoredIdentifierContext(_ctx, getState());
11725 		enterRule(_localctx, 228, RULE_ignoredIdentifier);
11726 		try {
11727 			enterOuterAlt(_localctx, 1);
11728 			{
11729 			setState(2038);
11730 			match(IDENTIFIER_);
11731 			}
11732 		}
11733 		catch (RecognitionException re) {
11734 			_localctx.exception = re;
11735 			_errHandler.reportError(this, re);
11736 			_errHandler.recover(this, re);
11737 		}
11738 		finally {
11739 			exitRule();
11740 		}
11741 		return _localctx;
11742 	}
11743 
11744 	public static class IgnoredIdentifiersContext extends ParserRuleContext {
11745 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
11746 			return getRuleContexts(IgnoredIdentifierContext.class);
11747 		}
11748 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
11749 			return getRuleContext(IgnoredIdentifierContext.class,i);
11750 		}
11751 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11752 		public TerminalNode COMMA_(int i) {
11753 			return getToken(SQLServerStatementParser.COMMA_, i);
11754 		}
11755 		public IgnoredIdentifiersContext(ParserRuleContext parent, int invokingState) {
11756 			super(parent, invokingState);
11757 		}
11758 		@Override public int getRuleIndex() { return RULE_ignoredIdentifiers; }
11759 		@Override
11760 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11761 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifiers(this);
11762 			else return visitor.visitChildren(this);
11763 		}
11764 	}
11765 
11766 	public final IgnoredIdentifiersContext ignoredIdentifiers() throws RecognitionException {
11767 		IgnoredIdentifiersContext _localctx = new IgnoredIdentifiersContext(_ctx, getState());
11768 		enterRule(_localctx, 230, RULE_ignoredIdentifiers);
11769 		try {
11770 			int _alt;
11771 			enterOuterAlt(_localctx, 1);
11772 			{
11773 			setState(2040);
11774 			ignoredIdentifier();
11775 			setState(2045);
11776 			_errHandler.sync(this);
11777 			_alt = getInterpreter().adaptivePredict(_input,127,_ctx);
11778 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
11779 				if ( _alt==1 ) {
11780 					{
11781 					{
11782 					setState(2041);
11783 					match(COMMA_);
11784 					setState(2042);
11785 					ignoredIdentifier();
11786 					}
11787 					} 
11788 				}
11789 				setState(2047);
11790 				_errHandler.sync(this);
11791 				_alt = getInterpreter().adaptivePredict(_input,127,_ctx);
11792 			}
11793 			}
11794 		}
11795 		catch (RecognitionException re) {
11796 			_localctx.exception = re;
11797 			_errHandler.reportError(this, re);
11798 			_errHandler.recover(this, re);
11799 		}
11800 		finally {
11801 			exitRule();
11802 		}
11803 		return _localctx;
11804 	}
11805 
11806 	public static class MatchNoneContext extends ParserRuleContext {
11807 		public MatchNoneContext(ParserRuleContext parent, int invokingState) {
11808 			super(parent, invokingState);
11809 		}
11810 		@Override public int getRuleIndex() { return RULE_matchNone; }
11811 		@Override
11812 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11813 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMatchNone(this);
11814 			else return visitor.visitChildren(this);
11815 		}
11816 	}
11817 
11818 	public final MatchNoneContext matchNone() throws RecognitionException {
11819 		MatchNoneContext _localctx = new MatchNoneContext(_ctx, getState());
11820 		enterRule(_localctx, 232, RULE_matchNone);
11821 		try {
11822 			enterOuterAlt(_localctx, 1);
11823 			{
11824 			setState(2048);
11825 			match(T__0);
11826 			}
11827 		}
11828 		catch (RecognitionException re) {
11829 			_localctx.exception = re;
11830 			_errHandler.reportError(this, re);
11831 			_errHandler.recover(this, re);
11832 		}
11833 		finally {
11834 			exitRule();
11835 		}
11836 		return _localctx;
11837 	}
11838 
11839 	public static class VariableNameContext extends ParserRuleContext {
11840 		public IdentifierContext identifier() {
11841 			return getRuleContext(IdentifierContext.class,0);
11842 		}
11843 		public VariableNameContext(ParserRuleContext parent, int invokingState) {
11844 			super(parent, invokingState);
11845 		}
11846 		@Override public int getRuleIndex() { return RULE_variableName; }
11847 		@Override
11848 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11849 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableName(this);
11850 			else return visitor.visitChildren(this);
11851 		}
11852 	}
11853 
11854 	public final VariableNameContext variableName() throws RecognitionException {
11855 		VariableNameContext _localctx = new VariableNameContext(_ctx, getState());
11856 		enterRule(_localctx, 234, RULE_variableName);
11857 		try {
11858 			enterOuterAlt(_localctx, 1);
11859 			{
11860 			setState(2050);
11861 			identifier();
11862 			}
11863 		}
11864 		catch (RecognitionException re) {
11865 			_localctx.exception = re;
11866 			_errHandler.reportError(this, re);
11867 			_errHandler.recover(this, re);
11868 		}
11869 		finally {
11870 			exitRule();
11871 		}
11872 		return _localctx;
11873 	}
11874 
11875 	public static class ExecuteAsClauseContext extends ParserRuleContext {
11876 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
11877 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
11878 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
11879 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
11880 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
11881 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
11882 		public StringLiteralsContext stringLiterals() {
11883 			return getRuleContext(StringLiteralsContext.class,0);
11884 		}
11885 		public ExecuteAsClauseContext(ParserRuleContext parent, int invokingState) {
11886 			super(parent, invokingState);
11887 		}
11888 		@Override public int getRuleIndex() { return RULE_executeAsClause; }
11889 		@Override
11890 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11891 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecuteAsClause(this);
11892 			else return visitor.visitChildren(this);
11893 		}
11894 	}
11895 
11896 	public final ExecuteAsClauseContext executeAsClause() throws RecognitionException {
11897 		ExecuteAsClauseContext _localctx = new ExecuteAsClauseContext(_ctx, getState());
11898 		enterRule(_localctx, 236, RULE_executeAsClause);
11899 		int _la;
11900 		try {
11901 			enterOuterAlt(_localctx, 1);
11902 			{
11903 			setState(2052);
11904 			_la = _input.LA(1);
11905 			if ( !(_la==EXECUTE || _la==EXEC) ) {
11906 			_errHandler.recoverInline(this);
11907 			}
11908 			else {
11909 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11910 				_errHandler.reportMatch(this);
11911 				consume();
11912 			}
11913 			setState(2053);
11914 			match(AS);
11915 			setState(2058);
11916 			_errHandler.sync(this);
11917 			switch (_input.LA(1)) {
11918 			case CALLER:
11919 				{
11920 				setState(2054);
11921 				match(CALLER);
11922 				}
11923 				break;
11924 			case SELF:
11925 				{
11926 				setState(2055);
11927 				match(SELF);
11928 				}
11929 				break;
11930 			case OWNER:
11931 				{
11932 				setState(2056);
11933 				match(OWNER);
11934 				}
11935 				break;
11936 			case STRING_:
11937 			case NCHAR_TEXT:
11938 				{
11939 				setState(2057);
11940 				stringLiterals();
11941 				}
11942 				break;
11943 			default:
11944 				throw new NoViableAltException(this);
11945 			}
11946 			}
11947 		}
11948 		catch (RecognitionException re) {
11949 			_localctx.exception = re;
11950 			_errHandler.reportError(this, re);
11951 			_errHandler.recover(this, re);
11952 		}
11953 		finally {
11954 			exitRule();
11955 		}
11956 		return _localctx;
11957 	}
11958 
11959 	public static class TransactionNameContext extends ParserRuleContext {
11960 		public IdentifierContext identifier() {
11961 			return getRuleContext(IdentifierContext.class,0);
11962 		}
11963 		public TransactionNameContext(ParserRuleContext parent, int invokingState) {
11964 			super(parent, invokingState);
11965 		}
11966 		@Override public int getRuleIndex() { return RULE_transactionName; }
11967 		@Override
11968 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11969 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionName(this);
11970 			else return visitor.visitChildren(this);
11971 		}
11972 	}
11973 
11974 	public final TransactionNameContext transactionName() throws RecognitionException {
11975 		TransactionNameContext _localctx = new TransactionNameContext(_ctx, getState());
11976 		enterRule(_localctx, 238, RULE_transactionName);
11977 		try {
11978 			enterOuterAlt(_localctx, 1);
11979 			{
11980 			setState(2060);
11981 			identifier();
11982 			}
11983 		}
11984 		catch (RecognitionException re) {
11985 			_localctx.exception = re;
11986 			_errHandler.reportError(this, re);
11987 			_errHandler.recover(this, re);
11988 		}
11989 		finally {
11990 			exitRule();
11991 		}
11992 		return _localctx;
11993 	}
11994 
11995 	public static class TransactionVariableNameContext extends ParserRuleContext {
11996 		public VariableNameContext variableName() {
11997 			return getRuleContext(VariableNameContext.class,0);
11998 		}
11999 		public TransactionVariableNameContext(ParserRuleContext parent, int invokingState) {
12000 			super(parent, invokingState);
12001 		}
12002 		@Override public int getRuleIndex() { return RULE_transactionVariableName; }
12003 		@Override
12004 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12005 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionVariableName(this);
12006 			else return visitor.visitChildren(this);
12007 		}
12008 	}
12009 
12010 	public final TransactionVariableNameContext transactionVariableName() throws RecognitionException {
12011 		TransactionVariableNameContext _localctx = new TransactionVariableNameContext(_ctx, getState());
12012 		enterRule(_localctx, 240, RULE_transactionVariableName);
12013 		try {
12014 			enterOuterAlt(_localctx, 1);
12015 			{
12016 			setState(2062);
12017 			variableName();
12018 			}
12019 		}
12020 		catch (RecognitionException re) {
12021 			_localctx.exception = re;
12022 			_errHandler.reportError(this, re);
12023 			_errHandler.recover(this, re);
12024 		}
12025 		finally {
12026 			exitRule();
12027 		}
12028 		return _localctx;
12029 	}
12030 
12031 	public static class SavepointNameContext extends ParserRuleContext {
12032 		public IdentifierContext identifier() {
12033 			return getRuleContext(IdentifierContext.class,0);
12034 		}
12035 		public SavepointNameContext(ParserRuleContext parent, int invokingState) {
12036 			super(parent, invokingState);
12037 		}
12038 		@Override public int getRuleIndex() { return RULE_savepointName; }
12039 		@Override
12040 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12041 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointName(this);
12042 			else return visitor.visitChildren(this);
12043 		}
12044 	}
12045 
12046 	public final SavepointNameContext savepointName() throws RecognitionException {
12047 		SavepointNameContext _localctx = new SavepointNameContext(_ctx, getState());
12048 		enterRule(_localctx, 242, RULE_savepointName);
12049 		try {
12050 			enterOuterAlt(_localctx, 1);
12051 			{
12052 			setState(2064);
12053 			identifier();
12054 			}
12055 		}
12056 		catch (RecognitionException re) {
12057 			_localctx.exception = re;
12058 			_errHandler.reportError(this, re);
12059 			_errHandler.recover(this, re);
12060 		}
12061 		finally {
12062 			exitRule();
12063 		}
12064 		return _localctx;
12065 	}
12066 
12067 	public static class SavepointVariableNameContext extends ParserRuleContext {
12068 		public VariableNameContext variableName() {
12069 			return getRuleContext(VariableNameContext.class,0);
12070 		}
12071 		public SavepointVariableNameContext(ParserRuleContext parent, int invokingState) {
12072 			super(parent, invokingState);
12073 		}
12074 		@Override public int getRuleIndex() { return RULE_savepointVariableName; }
12075 		@Override
12076 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12077 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointVariableName(this);
12078 			else return visitor.visitChildren(this);
12079 		}
12080 	}
12081 
12082 	public final SavepointVariableNameContext savepointVariableName() throws RecognitionException {
12083 		SavepointVariableNameContext _localctx = new SavepointVariableNameContext(_ctx, getState());
12084 		enterRule(_localctx, 244, RULE_savepointVariableName);
12085 		try {
12086 			enterOuterAlt(_localctx, 1);
12087 			{
12088 			setState(2066);
12089 			variableName();
12090 			}
12091 		}
12092 		catch (RecognitionException re) {
12093 			_localctx.exception = re;
12094 			_errHandler.reportError(this, re);
12095 			_errHandler.recover(this, re);
12096 		}
12097 		finally {
12098 			exitRule();
12099 		}
12100 		return _localctx;
12101 	}
12102 
12103 	public static class EntityTypeContext extends ParserRuleContext {
12104 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
12105 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
12106 		public EntityTypeContext(ParserRuleContext parent, int invokingState) {
12107 			super(parent, invokingState);
12108 		}
12109 		@Override public int getRuleIndex() { return RULE_entityType; }
12110 		@Override
12111 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12112 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEntityType(this);
12113 			else return visitor.visitChildren(this);
12114 		}
12115 	}
12116 
12117 	public final EntityTypeContext entityType() throws RecognitionException {
12118 		EntityTypeContext _localctx = new EntityTypeContext(_ctx, getState());
12119 		enterRule(_localctx, 246, RULE_entityType);
12120 		int _la;
12121 		try {
12122 			enterOuterAlt(_localctx, 1);
12123 			{
12124 			setState(2068);
12125 			_la = _input.LA(1);
12126 			if ( !(_la==TYPE || _la==OBJECT) ) {
12127 			_errHandler.recoverInline(this);
12128 			}
12129 			else {
12130 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12131 				_errHandler.reportMatch(this);
12132 				consume();
12133 			}
12134 			}
12135 		}
12136 		catch (RecognitionException re) {
12137 			_localctx.exception = re;
12138 			_errHandler.reportError(this, re);
12139 			_errHandler.recover(this, re);
12140 		}
12141 		finally {
12142 			exitRule();
12143 		}
12144 		return _localctx;
12145 	}
12146 
12147 	public static class IfExistsContext extends ParserRuleContext {
12148 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
12149 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
12150 		public IfExistsContext(ParserRuleContext parent, int invokingState) {
12151 			super(parent, invokingState);
12152 		}
12153 		@Override public int getRuleIndex() { return RULE_ifExists; }
12154 		@Override
12155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIfExists(this);
12157 			else return visitor.visitChildren(this);
12158 		}
12159 	}
12160 
12161 	public final IfExistsContext ifExists() throws RecognitionException {
12162 		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
12163 		enterRule(_localctx, 248, RULE_ifExists);
12164 		try {
12165 			enterOuterAlt(_localctx, 1);
12166 			{
12167 			setState(2070);
12168 			match(IF);
12169 			setState(2071);
12170 			match(EXISTS);
12171 			}
12172 		}
12173 		catch (RecognitionException re) {
12174 			_localctx.exception = re;
12175 			_errHandler.reportError(this, re);
12176 			_errHandler.recover(this, re);
12177 		}
12178 		finally {
12179 			exitRule();
12180 		}
12181 		return _localctx;
12182 	}
12183 
12184 	public static class TableHintLimitedContext extends ParserRuleContext {
12185 		public TerminalNode KEEPIDENTITY() { return getToken(SQLServerStatementParser.KEEPIDENTITY, 0); }
12186 		public TerminalNode KEEPDEFAULTS() { return getToken(SQLServerStatementParser.KEEPDEFAULTS, 0); }
12187 		public TerminalNode HOLDLOCK() { return getToken(SQLServerStatementParser.HOLDLOCK, 0); }
12188 		public TerminalNode IGNORE_CONSTRAINTS() { return getToken(SQLServerStatementParser.IGNORE_CONSTRAINTS, 0); }
12189 		public TerminalNode IGNORE_TRIGGERS() { return getToken(SQLServerStatementParser.IGNORE_TRIGGERS, 0); }
12190 		public TerminalNode NOLOCK() { return getToken(SQLServerStatementParser.NOLOCK, 0); }
12191 		public TerminalNode NOWAIT() { return getToken(SQLServerStatementParser.NOWAIT, 0); }
12192 		public TerminalNode PAGLOCK() { return getToken(SQLServerStatementParser.PAGLOCK, 0); }
12193 		public TerminalNode READCOMMITTED() { return getToken(SQLServerStatementParser.READCOMMITTED, 0); }
12194 		public TerminalNode READCOMMITTEDLOCK() { return getToken(SQLServerStatementParser.READCOMMITTEDLOCK, 0); }
12195 		public TerminalNode READPAST() { return getToken(SQLServerStatementParser.READPAST, 0); }
12196 		public TerminalNode REPEATABLEREAD() { return getToken(SQLServerStatementParser.REPEATABLEREAD, 0); }
12197 		public TerminalNode ROWLOCK() { return getToken(SQLServerStatementParser.ROWLOCK, 0); }
12198 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
12199 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
12200 		public TerminalNode TABLOCK() { return getToken(SQLServerStatementParser.TABLOCK, 0); }
12201 		public TerminalNode TABLOCKX() { return getToken(SQLServerStatementParser.TABLOCKX, 0); }
12202 		public TerminalNode UPDLOCK() { return getToken(SQLServerStatementParser.UPDLOCK, 0); }
12203 		public TerminalNode XLOCK() { return getToken(SQLServerStatementParser.XLOCK, 0); }
12204 		public TableHintLimitedContext(ParserRuleContext parent, int invokingState) {
12205 			super(parent, invokingState);
12206 		}
12207 		@Override public int getRuleIndex() { return RULE_tableHintLimited; }
12208 		@Override
12209 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12210 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableHintLimited(this);
12211 			else return visitor.visitChildren(this);
12212 		}
12213 	}
12214 
12215 	public final TableHintLimitedContext tableHintLimited() throws RecognitionException {
12216 		TableHintLimitedContext _localctx = new TableHintLimitedContext(_ctx, getState());
12217 		enterRule(_localctx, 250, RULE_tableHintLimited);
12218 		int _la;
12219 		try {
12220 			enterOuterAlt(_localctx, 1);
12221 			{
12222 			setState(2073);
12223 			_la = _input.LA(1);
12224 			if ( !(((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (KEEPIDENTITY - 216)) | (1L << (KEEPDEFAULTS - 216)) | (1L << (HOLDLOCK - 216)) | (1L << (IGNORE_CONSTRAINTS - 216)) | (1L << (IGNORE_TRIGGERS - 216)) | (1L << (NOLOCK - 216)) | (1L << (NOWAIT - 216)) | (1L << (PAGLOCK - 216)) | (1L << (READCOMMITTED - 216)) | (1L << (READCOMMITTEDLOCK - 216)) | (1L << (READPAST - 216)) | (1L << (REPEATABLEREAD - 216)) | (1L << (ROWLOCK - 216)) | (1L << (TABLOCK - 216)) | (1L << (TABLOCKX - 216)) | (1L << (UPDLOCK - 216)) | (1L << (XLOCK - 216)))) != 0) || _la==SNAPSHOT || _la==SERIALIZABLE) ) {
12225 			_errHandler.recoverInline(this);
12226 			}
12227 			else {
12228 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12229 				_errHandler.reportMatch(this);
12230 				consume();
12231 			}
12232 			}
12233 		}
12234 		catch (RecognitionException re) {
12235 			_localctx.exception = re;
12236 			_errHandler.reportError(this, re);
12237 			_errHandler.recover(this, re);
12238 		}
12239 		finally {
12240 			exitRule();
12241 		}
12242 		return _localctx;
12243 	}
12244 
12245 	public static class CallContext extends ParserRuleContext {
12246 		public TerminalNode CALL() { return getToken(SQLServerStatementParser.CALL, 0); }
12247 		public CallContext(ParserRuleContext parent, int invokingState) {
12248 			super(parent, invokingState);
12249 		}
12250 		@Override public int getRuleIndex() { return RULE_call; }
12251 		@Override
12252 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12253 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCall(this);
12254 			else return visitor.visitChildren(this);
12255 		}
12256 	}
12257 
12258 	public final CallContext call() throws RecognitionException {
12259 		CallContext _localctx = new CallContext(_ctx, getState());
12260 		enterRule(_localctx, 252, RULE_call);
12261 		try {
12262 			enterOuterAlt(_localctx, 1);
12263 			{
12264 			setState(2075);
12265 			match(CALL);
12266 			}
12267 		}
12268 		catch (RecognitionException re) {
12269 			_localctx.exception = re;
12270 			_errHandler.reportError(this, re);
12271 			_errHandler.recover(this, re);
12272 		}
12273 		finally {
12274 			exitRule();
12275 		}
12276 		return _localctx;
12277 	}
12278 
12279 	public static class ExplainContext extends ParserRuleContext {
12280 		public TerminalNode EXPLAIN() { return getToken(SQLServerStatementParser.EXPLAIN, 0); }
12281 		public ExplainableStatementContext explainableStatement() {
12282 			return getRuleContext(ExplainableStatementContext.class,0);
12283 		}
12284 		public TerminalNode WITH_RECOMMENDATIONS() { return getToken(SQLServerStatementParser.WITH_RECOMMENDATIONS, 0); }
12285 		public ExplainContext(ParserRuleContext parent, int invokingState) {
12286 			super(parent, invokingState);
12287 		}
12288 		@Override public int getRuleIndex() { return RULE_explain; }
12289 		@Override
12290 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12291 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplain(this);
12292 			else return visitor.visitChildren(this);
12293 		}
12294 	}
12295 
12296 	public final ExplainContext explain() throws RecognitionException {
12297 		ExplainContext _localctx = new ExplainContext(_ctx, getState());
12298 		enterRule(_localctx, 254, RULE_explain);
12299 		int _la;
12300 		try {
12301 			enterOuterAlt(_localctx, 1);
12302 			{
12303 			setState(2077);
12304 			match(EXPLAIN);
12305 			setState(2079);
12306 			_errHandler.sync(this);
12307 			_la = _input.LA(1);
12308 			if (_la==WITH_RECOMMENDATIONS) {
12309 				{
12310 				setState(2078);
12311 				match(WITH_RECOMMENDATIONS);
12312 				}
12313 			}
12314 
12315 			setState(2081);
12316 			explainableStatement();
12317 			}
12318 		}
12319 		catch (RecognitionException re) {
12320 			_localctx.exception = re;
12321 			_errHandler.reportError(this, re);
12322 			_errHandler.recover(this, re);
12323 		}
12324 		finally {
12325 			exitRule();
12326 		}
12327 		return _localctx;
12328 	}
12329 
12330 	public static class ExplainableStatementContext extends ParserRuleContext {
12331 		public SelectContext select() {
12332 			return getRuleContext(SelectContext.class,0);
12333 		}
12334 		public InsertContext insert() {
12335 			return getRuleContext(InsertContext.class,0);
12336 		}
12337 		public UpdateContext update() {
12338 			return getRuleContext(UpdateContext.class,0);
12339 		}
12340 		public DeleteContext delete() {
12341 			return getRuleContext(DeleteContext.class,0);
12342 		}
12343 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
12344 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
12345 		}
12346 		public ExplainableStatementContext(ParserRuleContext parent, int invokingState) {
12347 			super(parent, invokingState);
12348 		}
12349 		@Override public int getRuleIndex() { return RULE_explainableStatement; }
12350 		@Override
12351 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12352 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplainableStatement(this);
12353 			else return visitor.visitChildren(this);
12354 		}
12355 	}
12356 
12357 	public final ExplainableStatementContext explainableStatement() throws RecognitionException {
12358 		ExplainableStatementContext _localctx = new ExplainableStatementContext(_ctx, getState());
12359 		enterRule(_localctx, 256, RULE_explainableStatement);
12360 		try {
12361 			setState(2088);
12362 			_errHandler.sync(this);
12363 			switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) {
12364 			case 1:
12365 				enterOuterAlt(_localctx, 1);
12366 				{
12367 				setState(2083);
12368 				select();
12369 				}
12370 				break;
12371 			case 2:
12372 				enterOuterAlt(_localctx, 2);
12373 				{
12374 				setState(2084);
12375 				insert();
12376 				}
12377 				break;
12378 			case 3:
12379 				enterOuterAlt(_localctx, 3);
12380 				{
12381 				setState(2085);
12382 				update();
12383 				}
12384 				break;
12385 			case 4:
12386 				enterOuterAlt(_localctx, 4);
12387 				{
12388 				setState(2086);
12389 				delete();
12390 				}
12391 				break;
12392 			case 5:
12393 				enterOuterAlt(_localctx, 5);
12394 				{
12395 				setState(2087);
12396 				createTableAsSelectClause();
12397 				}
12398 				break;
12399 			}
12400 		}
12401 		catch (RecognitionException re) {
12402 			_localctx.exception = re;
12403 			_errHandler.reportError(this, re);
12404 			_errHandler.recover(this, re);
12405 		}
12406 		finally {
12407 			exitRule();
12408 		}
12409 		return _localctx;
12410 	}
12411 
12412 	public static class CreateTableContext extends ParserRuleContext {
12413 		public CreateTableClauseContext createTableClause() {
12414 			return getRuleContext(CreateTableClauseContext.class,0);
12415 		}
12416 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
12417 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
12418 		}
12419 		public CreateTableContext(ParserRuleContext parent, int invokingState) {
12420 			super(parent, invokingState);
12421 		}
12422 		@Override public int getRuleIndex() { return RULE_createTable; }
12423 		@Override
12424 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12425 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTable(this);
12426 			else return visitor.visitChildren(this);
12427 		}
12428 	}
12429 
12430 	public final CreateTableContext createTable() throws RecognitionException {
12431 		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
12432 		enterRule(_localctx, 258, RULE_createTable);
12433 		try {
12434 			setState(2092);
12435 			_errHandler.sync(this);
12436 			switch ( getInterpreter().adaptivePredict(_input,131,_ctx) ) {
12437 			case 1:
12438 				enterOuterAlt(_localctx, 1);
12439 				{
12440 				setState(2090);
12441 				createTableClause();
12442 				}
12443 				break;
12444 			case 2:
12445 				enterOuterAlt(_localctx, 2);
12446 				{
12447 				setState(2091);
12448 				createTableAsSelectClause();
12449 				}
12450 				break;
12451 			}
12452 		}
12453 		catch (RecognitionException re) {
12454 			_localctx.exception = re;
12455 			_errHandler.reportError(this, re);
12456 			_errHandler.recover(this, re);
12457 		}
12458 		finally {
12459 			exitRule();
12460 		}
12461 		return _localctx;
12462 	}
12463 
12464 	public static class CreateTableClauseContext extends ParserRuleContext {
12465 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12466 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
12467 		public TableNameContext tableName() {
12468 			return getRuleContext(TableNameContext.class,0);
12469 		}
12470 		public FileTableClauseContext fileTableClause() {
12471 			return getRuleContext(FileTableClauseContext.class,0);
12472 		}
12473 		public CreateDefinitionClauseContext createDefinitionClause() {
12474 			return getRuleContext(CreateDefinitionClauseContext.class,0);
12475 		}
12476 		public CreateTableClauseContext(ParserRuleContext parent, int invokingState) {
12477 			super(parent, invokingState);
12478 		}
12479 		@Override public int getRuleIndex() { return RULE_createTableClause; }
12480 		@Override
12481 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12482 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableClause(this);
12483 			else return visitor.visitChildren(this);
12484 		}
12485 	}
12486 
12487 	public final CreateTableClauseContext createTableClause() throws RecognitionException {
12488 		CreateTableClauseContext _localctx = new CreateTableClauseContext(_ctx, getState());
12489 		enterRule(_localctx, 260, RULE_createTableClause);
12490 		try {
12491 			enterOuterAlt(_localctx, 1);
12492 			{
12493 			setState(2094);
12494 			match(CREATE);
12495 			setState(2095);
12496 			match(TABLE);
12497 			setState(2096);
12498 			tableName();
12499 			setState(2097);
12500 			fileTableClause();
12501 			setState(2098);
12502 			createDefinitionClause();
12503 			}
12504 		}
12505 		catch (RecognitionException re) {
12506 			_localctx.exception = re;
12507 			_errHandler.reportError(this, re);
12508 			_errHandler.recover(this, re);
12509 		}
12510 		finally {
12511 			exitRule();
12512 		}
12513 		return _localctx;
12514 	}
12515 
12516 	public static class CreateIndexContext extends ParserRuleContext {
12517 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12518 		public CreateIndexSpecificationContext createIndexSpecification() {
12519 			return getRuleContext(CreateIndexSpecificationContext.class,0);
12520 		}
12521 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
12522 		public IndexNameContext indexName() {
12523 			return getRuleContext(IndexNameContext.class,0);
12524 		}
12525 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12526 		public TableNameContext tableName() {
12527 			return getRuleContext(TableNameContext.class,0);
12528 		}
12529 		public ColumnNamesWithSortContext columnNamesWithSort() {
12530 			return getRuleContext(ColumnNamesWithSortContext.class,0);
12531 		}
12532 		public CreateIndexClauseContext createIndexClause() {
12533 			return getRuleContext(CreateIndexClauseContext.class,0);
12534 		}
12535 		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
12536 			super(parent, invokingState);
12537 		}
12538 		@Override public int getRuleIndex() { return RULE_createIndex; }
12539 		@Override
12540 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12541 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndex(this);
12542 			else return visitor.visitChildren(this);
12543 		}
12544 	}
12545 
12546 	public final CreateIndexContext createIndex() throws RecognitionException {
12547 		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
12548 		enterRule(_localctx, 262, RULE_createIndex);
12549 		try {
12550 			enterOuterAlt(_localctx, 1);
12551 			{
12552 			setState(2100);
12553 			match(CREATE);
12554 			setState(2101);
12555 			createIndexSpecification();
12556 			setState(2102);
12557 			match(INDEX);
12558 			setState(2103);
12559 			indexName();
12560 			setState(2104);
12561 			match(ON);
12562 			setState(2105);
12563 			tableName();
12564 			setState(2106);
12565 			columnNamesWithSort();
12566 			setState(2107);
12567 			createIndexClause();
12568 			}
12569 		}
12570 		catch (RecognitionException re) {
12571 			_localctx.exception = re;
12572 			_errHandler.reportError(this, re);
12573 			_errHandler.recover(this, re);
12574 		}
12575 		finally {
12576 			exitRule();
12577 		}
12578 		return _localctx;
12579 	}
12580 
12581 	public static class CreateDatabaseContext extends ParserRuleContext {
12582 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12583 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
12584 		public DatabaseNameContext databaseName() {
12585 			return getRuleContext(DatabaseNameContext.class,0);
12586 		}
12587 		public CreateDatabaseClauseContext createDatabaseClause() {
12588 			return getRuleContext(CreateDatabaseClauseContext.class,0);
12589 		}
12590 		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
12591 			super(parent, invokingState);
12592 		}
12593 		@Override public int getRuleIndex() { return RULE_createDatabase; }
12594 		@Override
12595 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12596 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabase(this);
12597 			else return visitor.visitChildren(this);
12598 		}
12599 	}
12600 
12601 	public final CreateDatabaseContext createDatabase() throws RecognitionException {
12602 		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
12603 		enterRule(_localctx, 264, RULE_createDatabase);
12604 		try {
12605 			enterOuterAlt(_localctx, 1);
12606 			{
12607 			setState(2109);
12608 			match(CREATE);
12609 			setState(2110);
12610 			match(DATABASE);
12611 			setState(2111);
12612 			databaseName();
12613 			setState(2112);
12614 			createDatabaseClause();
12615 			}
12616 		}
12617 		catch (RecognitionException re) {
12618 			_localctx.exception = re;
12619 			_errHandler.reportError(this, re);
12620 			_errHandler.recover(this, re);
12621 		}
12622 		finally {
12623 			exitRule();
12624 		}
12625 		return _localctx;
12626 	}
12627 
12628 	public static class CreateFunctionContext extends ParserRuleContext {
12629 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12630 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
12631 		public FunctionNameContext functionName() {
12632 			return getRuleContext(FunctionNameContext.class,0);
12633 		}
12634 		public FuncParametersContext funcParameters() {
12635 			return getRuleContext(FuncParametersContext.class,0);
12636 		}
12637 		public FuncReturnsContext funcReturns() {
12638 			return getRuleContext(FuncReturnsContext.class,0);
12639 		}
12640 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12641 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12642 		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
12643 			super(parent, invokingState);
12644 		}
12645 		@Override public int getRuleIndex() { return RULE_createFunction; }
12646 		@Override
12647 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12648 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateFunction(this);
12649 			else return visitor.visitChildren(this);
12650 		}
12651 	}
12652 
12653 	public final CreateFunctionContext createFunction() throws RecognitionException {
12654 		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
12655 		enterRule(_localctx, 266, RULE_createFunction);
12656 		int _la;
12657 		try {
12658 			enterOuterAlt(_localctx, 1);
12659 			{
12660 			setState(2114);
12661 			match(CREATE);
12662 			setState(2117);
12663 			_errHandler.sync(this);
12664 			_la = _input.LA(1);
12665 			if (_la==OR) {
12666 				{
12667 				setState(2115);
12668 				match(OR);
12669 				setState(2116);
12670 				match(ALTER);
12671 				}
12672 			}
12673 
12674 			setState(2119);
12675 			match(FUNCTION);
12676 			setState(2120);
12677 			functionName();
12678 			setState(2121);
12679 			funcParameters();
12680 			setState(2122);
12681 			funcReturns();
12682 			}
12683 		}
12684 		catch (RecognitionException re) {
12685 			_localctx.exception = re;
12686 			_errHandler.reportError(this, re);
12687 			_errHandler.recover(this, re);
12688 		}
12689 		finally {
12690 			exitRule();
12691 		}
12692 		return _localctx;
12693 	}
12694 
12695 	public static class CreateProcedureContext extends ParserRuleContext {
12696 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12697 		public ProcedureNameContext procedureName() {
12698 			return getRuleContext(ProcedureNameContext.class,0);
12699 		}
12700 		public ProcParametersContext procParameters() {
12701 			return getRuleContext(ProcParametersContext.class,0);
12702 		}
12703 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
12704 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
12705 		}
12706 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
12707 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
12708 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12709 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12710 		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
12711 			super(parent, invokingState);
12712 		}
12713 		@Override public int getRuleIndex() { return RULE_createProcedure; }
12714 		@Override
12715 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12716 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateProcedure(this);
12717 			else return visitor.visitChildren(this);
12718 		}
12719 	}
12720 
12721 	public final CreateProcedureContext createProcedure() throws RecognitionException {
12722 		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
12723 		enterRule(_localctx, 268, RULE_createProcedure);
12724 		int _la;
12725 		try {
12726 			enterOuterAlt(_localctx, 1);
12727 			{
12728 			setState(2124);
12729 			match(CREATE);
12730 			setState(2127);
12731 			_errHandler.sync(this);
12732 			_la = _input.LA(1);
12733 			if (_la==OR) {
12734 				{
12735 				setState(2125);
12736 				match(OR);
12737 				setState(2126);
12738 				match(ALTER);
12739 				}
12740 			}
12741 
12742 			setState(2129);
12743 			_la = _input.LA(1);
12744 			if ( !(_la==PROCEDURE || _la==PROC) ) {
12745 			_errHandler.recoverInline(this);
12746 			}
12747 			else {
12748 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12749 				_errHandler.reportMatch(this);
12750 				consume();
12751 			}
12752 			setState(2130);
12753 			procedureName();
12754 			setState(2131);
12755 			procParameters();
12756 			setState(2132);
12757 			createOrAlterProcClause();
12758 			}
12759 		}
12760 		catch (RecognitionException re) {
12761 			_localctx.exception = re;
12762 			_errHandler.reportError(this, re);
12763 			_errHandler.recover(this, re);
12764 		}
12765 		finally {
12766 			exitRule();
12767 		}
12768 		return _localctx;
12769 	}
12770 
12771 	public static class CreateViewContext extends ParserRuleContext {
12772 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12773 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
12774 		public ViewNameContext viewName() {
12775 			return getRuleContext(ViewNameContext.class,0);
12776 		}
12777 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
12778 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
12779 		}
12780 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12781 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12782 		public CreateViewContext(ParserRuleContext parent, int invokingState) {
12783 			super(parent, invokingState);
12784 		}
12785 		@Override public int getRuleIndex() { return RULE_createView; }
12786 		@Override
12787 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12788 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateView(this);
12789 			else return visitor.visitChildren(this);
12790 		}
12791 	}
12792 
12793 	public final CreateViewContext createView() throws RecognitionException {
12794 		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
12795 		enterRule(_localctx, 270, RULE_createView);
12796 		int _la;
12797 		try {
12798 			enterOuterAlt(_localctx, 1);
12799 			{
12800 			setState(2134);
12801 			match(CREATE);
12802 			setState(2137);
12803 			_errHandler.sync(this);
12804 			_la = _input.LA(1);
12805 			if (_la==OR) {
12806 				{
12807 				setState(2135);
12808 				match(OR);
12809 				setState(2136);
12810 				match(ALTER);
12811 				}
12812 			}
12813 
12814 			setState(2139);
12815 			match(VIEW);
12816 			setState(2140);
12817 			viewName();
12818 			setState(2141);
12819 			createOrAlterViewClause();
12820 			}
12821 		}
12822 		catch (RecognitionException re) {
12823 			_localctx.exception = re;
12824 			_errHandler.reportError(this, re);
12825 			_errHandler.recover(this, re);
12826 		}
12827 		finally {
12828 			exitRule();
12829 		}
12830 		return _localctx;
12831 	}
12832 
12833 	public static class CreateTriggerContext extends ParserRuleContext {
12834 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12835 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
12836 		public TriggerNameContext triggerName() {
12837 			return getRuleContext(TriggerNameContext.class,0);
12838 		}
12839 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12840 		public TriggerTargetContext triggerTarget() {
12841 			return getRuleContext(TriggerTargetContext.class,0);
12842 		}
12843 		public CreateTriggerClauseContext createTriggerClause() {
12844 			return getRuleContext(CreateTriggerClauseContext.class,0);
12845 		}
12846 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12847 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12848 		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
12849 			super(parent, invokingState);
12850 		}
12851 		@Override public int getRuleIndex() { return RULE_createTrigger; }
12852 		@Override
12853 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12854 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTrigger(this);
12855 			else return visitor.visitChildren(this);
12856 		}
12857 	}
12858 
12859 	public final CreateTriggerContext createTrigger() throws RecognitionException {
12860 		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
12861 		enterRule(_localctx, 272, RULE_createTrigger);
12862 		int _la;
12863 		try {
12864 			enterOuterAlt(_localctx, 1);
12865 			{
12866 			setState(2143);
12867 			match(CREATE);
12868 			setState(2146);
12869 			_errHandler.sync(this);
12870 			_la = _input.LA(1);
12871 			if (_la==OR) {
12872 				{
12873 				setState(2144);
12874 				match(OR);
12875 				setState(2145);
12876 				match(ALTER);
12877 				}
12878 			}
12879 
12880 			setState(2148);
12881 			match(TRIGGER);
12882 			setState(2149);
12883 			triggerName();
12884 			setState(2150);
12885 			match(ON);
12886 			setState(2151);
12887 			triggerTarget();
12888 			setState(2152);
12889 			createTriggerClause();
12890 			}
12891 		}
12892 		catch (RecognitionException re) {
12893 			_localctx.exception = re;
12894 			_errHandler.reportError(this, re);
12895 			_errHandler.recover(this, re);
12896 		}
12897 		finally {
12898 			exitRule();
12899 		}
12900 		return _localctx;
12901 	}
12902 
12903 	public static class CreateSequenceContext extends ParserRuleContext {
12904 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12905 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
12906 		public SequenceNameContext sequenceName() {
12907 			return getRuleContext(SequenceNameContext.class,0);
12908 		}
12909 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
12910 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
12911 		}
12912 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
12913 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
12914 		}
12915 		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
12916 			super(parent, invokingState);
12917 		}
12918 		@Override public int getRuleIndex() { return RULE_createSequence; }
12919 		@Override
12920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSequence(this);
12922 			else return visitor.visitChildren(this);
12923 		}
12924 	}
12925 
12926 	public final CreateSequenceContext createSequence() throws RecognitionException {
12927 		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
12928 		enterRule(_localctx, 274, RULE_createSequence);
12929 		int _la;
12930 		try {
12931 			enterOuterAlt(_localctx, 1);
12932 			{
12933 			setState(2154);
12934 			match(CREATE);
12935 			setState(2155);
12936 			match(SEQUENCE);
12937 			setState(2156);
12938 			sequenceName();
12939 			setState(2160);
12940 			_errHandler.sync(this);
12941 			_la = _input.LA(1);
12942 			while (_la==AS || _la==NO || _la==START || ((((_la - 548)) & ~0x3f) == 0 && ((1L << (_la - 548)) & ((1L << (INCREMENT - 548)) | (1L << (CYCLE - 548)) | (1L << (CACHE - 548)) | (1L << (MINVALUE - 548)) | (1L << (MAXVALUE - 548)) | (1L << (RESTART - 548)))) != 0)) {
12943 				{
12944 				{
12945 				setState(2157);
12946 				createOrAlterSequenceClause();
12947 				}
12948 				}
12949 				setState(2162);
12950 				_errHandler.sync(this);
12951 				_la = _input.LA(1);
12952 			}
12953 			}
12954 		}
12955 		catch (RecognitionException re) {
12956 			_localctx.exception = re;
12957 			_errHandler.reportError(this, re);
12958 			_errHandler.recover(this, re);
12959 		}
12960 		finally {
12961 			exitRule();
12962 		}
12963 		return _localctx;
12964 	}
12965 
12966 	public static class CreateServiceContext extends ParserRuleContext {
12967 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12968 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
12969 		public ServiceNameContext serviceName() {
12970 			return getRuleContext(ServiceNameContext.class,0);
12971 		}
12972 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12973 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
12974 		public QueueNameContext queueName() {
12975 			return getRuleContext(QueueNameContext.class,0);
12976 		}
12977 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
12978 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
12979 		public CreateServiceClauseContext createServiceClause() {
12980 			return getRuleContext(CreateServiceClauseContext.class,0);
12981 		}
12982 		public CreateServiceContext(ParserRuleContext parent, int invokingState) {
12983 			super(parent, invokingState);
12984 		}
12985 		@Override public int getRuleIndex() { return RULE_createService; }
12986 		@Override
12987 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12988 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateService(this);
12989 			else return visitor.visitChildren(this);
12990 		}
12991 	}
12992 
12993 	public final CreateServiceContext createService() throws RecognitionException {
12994 		CreateServiceContext _localctx = new CreateServiceContext(_ctx, getState());
12995 		enterRule(_localctx, 276, RULE_createService);
12996 		int _la;
12997 		try {
12998 			enterOuterAlt(_localctx, 1);
12999 			{
13000 			setState(2163);
13001 			match(CREATE);
13002 			setState(2164);
13003 			match(SERVICE);
13004 			setState(2165);
13005 			serviceName();
13006 			setState(2168);
13007 			_errHandler.sync(this);
13008 			_la = _input.LA(1);
13009 			if (_la==AUTHORIZATION) {
13010 				{
13011 				setState(2166);
13012 				match(AUTHORIZATION);
13013 				setState(2167);
13014 				match(STRING_);
13015 				}
13016 			}
13017 
13018 			setState(2170);
13019 			match(ON);
13020 			setState(2171);
13021 			match(QUEUE);
13022 			setState(2172);
13023 			queueName();
13024 			setState(2174);
13025 			_errHandler.sync(this);
13026 			_la = _input.LA(1);
13027 			if (_la==LP_) {
13028 				{
13029 				setState(2173);
13030 				createServiceClause();
13031 				}
13032 			}
13033 
13034 			}
13035 		}
13036 		catch (RecognitionException re) {
13037 			_localctx.exception = re;
13038 			_errHandler.reportError(this, re);
13039 			_errHandler.recover(this, re);
13040 		}
13041 		finally {
13042 			exitRule();
13043 		}
13044 		return _localctx;
13045 	}
13046 
13047 	public static class CreateSchemaContext extends ParserRuleContext {
13048 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
13049 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13050 		public SchemaNameClauseContext schemaNameClause() {
13051 			return getRuleContext(SchemaNameClauseContext.class,0);
13052 		}
13053 		public List<SchemaElementContext> schemaElement() {
13054 			return getRuleContexts(SchemaElementContext.class);
13055 		}
13056 		public SchemaElementContext schemaElement(int i) {
13057 			return getRuleContext(SchemaElementContext.class,i);
13058 		}
13059 		public CreateSchemaContext(ParserRuleContext parent, int invokingState) {
13060 			super(parent, invokingState);
13061 		}
13062 		@Override public int getRuleIndex() { return RULE_createSchema; }
13063 		@Override
13064 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13065 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSchema(this);
13066 			else return visitor.visitChildren(this);
13067 		}
13068 	}
13069 
13070 	public final CreateSchemaContext createSchema() throws RecognitionException {
13071 		CreateSchemaContext _localctx = new CreateSchemaContext(_ctx, getState());
13072 		enterRule(_localctx, 278, RULE_createSchema);
13073 		int _la;
13074 		try {
13075 			enterOuterAlt(_localctx, 1);
13076 			{
13077 			setState(2176);
13078 			match(CREATE);
13079 			setState(2177);
13080 			match(SCHEMA);
13081 			setState(2178);
13082 			schemaNameClause();
13083 			setState(2182);
13084 			_errHandler.sync(this);
13085 			_la = _input.LA(1);
13086 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CREATE) | (1L << GRANT) | (1L << REVOKE))) != 0) || _la==DENY) {
13087 				{
13088 				{
13089 				setState(2179);
13090 				schemaElement();
13091 				}
13092 				}
13093 				setState(2184);
13094 				_errHandler.sync(this);
13095 				_la = _input.LA(1);
13096 			}
13097 			}
13098 		}
13099 		catch (RecognitionException re) {
13100 			_localctx.exception = re;
13101 			_errHandler.reportError(this, re);
13102 			_errHandler.recover(this, re);
13103 		}
13104 		finally {
13105 			exitRule();
13106 		}
13107 		return _localctx;
13108 	}
13109 
13110 	public static class AlterTableContext extends ParserRuleContext {
13111 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13112 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13113 		public TableNameContext tableName() {
13114 			return getRuleContext(TableNameContext.class,0);
13115 		}
13116 		public List<AlterDefinitionClauseContext> alterDefinitionClause() {
13117 			return getRuleContexts(AlterDefinitionClauseContext.class);
13118 		}
13119 		public AlterDefinitionClauseContext alterDefinitionClause(int i) {
13120 			return getRuleContext(AlterDefinitionClauseContext.class,i);
13121 		}
13122 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13123 		public TerminalNode COMMA_(int i) {
13124 			return getToken(SQLServerStatementParser.COMMA_, i);
13125 		}
13126 		public AlterTableContext(ParserRuleContext parent, int invokingState) {
13127 			super(parent, invokingState);
13128 		}
13129 		@Override public int getRuleIndex() { return RULE_alterTable; }
13130 		@Override
13131 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13132 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTable(this);
13133 			else return visitor.visitChildren(this);
13134 		}
13135 	}
13136 
13137 	public final AlterTableContext alterTable() throws RecognitionException {
13138 		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
13139 		enterRule(_localctx, 280, RULE_alterTable);
13140 		int _la;
13141 		try {
13142 			enterOuterAlt(_localctx, 1);
13143 			{
13144 			setState(2185);
13145 			match(ALTER);
13146 			setState(2186);
13147 			match(TABLE);
13148 			setState(2187);
13149 			tableName();
13150 			setState(2188);
13151 			alterDefinitionClause();
13152 			setState(2193);
13153 			_errHandler.sync(this);
13154 			_la = _input.LA(1);
13155 			while (_la==COMMA_) {
13156 				{
13157 				{
13158 				setState(2189);
13159 				match(COMMA_);
13160 				setState(2190);
13161 				alterDefinitionClause();
13162 				}
13163 				}
13164 				setState(2195);
13165 				_errHandler.sync(this);
13166 				_la = _input.LA(1);
13167 			}
13168 			}
13169 		}
13170 		catch (RecognitionException re) {
13171 			_localctx.exception = re;
13172 			_errHandler.reportError(this, re);
13173 			_errHandler.recover(this, re);
13174 		}
13175 		finally {
13176 			exitRule();
13177 		}
13178 		return _localctx;
13179 	}
13180 
13181 	public static class AlterIndexContext extends ParserRuleContext {
13182 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13183 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
13184 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13185 		public TableNameContext tableName() {
13186 			return getRuleContext(TableNameContext.class,0);
13187 		}
13188 		public AlterIndexClauseContext alterIndexClause() {
13189 			return getRuleContext(AlterIndexClauseContext.class,0);
13190 		}
13191 		public IndexNameContext indexName() {
13192 			return getRuleContext(IndexNameContext.class,0);
13193 		}
13194 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
13195 		public AlterIndexContext(ParserRuleContext parent, int invokingState) {
13196 			super(parent, invokingState);
13197 		}
13198 		@Override public int getRuleIndex() { return RULE_alterIndex; }
13199 		@Override
13200 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13201 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndex(this);
13202 			else return visitor.visitChildren(this);
13203 		}
13204 	}
13205 
13206 	public final AlterIndexContext alterIndex() throws RecognitionException {
13207 		AlterIndexContext _localctx = new AlterIndexContext(_ctx, getState());
13208 		enterRule(_localctx, 282, RULE_alterIndex);
13209 		try {
13210 			enterOuterAlt(_localctx, 1);
13211 			{
13212 			setState(2196);
13213 			match(ALTER);
13214 			setState(2197);
13215 			match(INDEX);
13216 			setState(2200);
13217 			_errHandler.sync(this);
13218 			switch (_input.LA(1)) {
13219 			case TRUNCATE:
13220 			case SCHEMA:
13221 			case COLUMNS:
13222 			case PRECISION:
13223 			case FUNCTION:
13224 			case TRIGGER:
13225 			case CAST:
13226 			case TRIM:
13227 			case SUBSTRING:
13228 			case OFF:
13229 			case GROUP:
13230 			case LIMIT:
13231 			case OFFSET:
13232 			case SAVEPOINT:
13233 			case BOOLEAN:
13234 			case ARRAY:
13235 			case DATE:
13236 			case TIMESTAMP:
13237 			case LOCALTIME:
13238 			case LOCALTIMESTAMP:
13239 			case YEAR:
13240 			case QUARTER:
13241 			case MONTH:
13242 			case WEEK:
13243 			case DAY:
13244 			case SECOND:
13245 			case MICROSECOND:
13246 			case MAX:
13247 			case MIN:
13248 			case SUM:
13249 			case COUNT:
13250 			case AVG:
13251 			case ENABLE:
13252 			case DISABLE:
13253 			case INSTANCE:
13254 			case DO:
13255 			case DEFINER:
13256 			case SQL:
13257 			case CASCADED:
13258 			case LOCAL:
13259 			case NEXT:
13260 			case NAME:
13261 			case INTEGER:
13262 			case TYPE:
13263 			case TEXT:
13264 			case VIEWS:
13265 			case READ_ONLY:
13266 			case DATABASE:
13267 			case RETURNS:
13268 			case DATEPART:
13269 			case PASSWORD:
13270 			case BINARY:
13271 			case HIDDEN_:
13272 			case MOD:
13273 			case PARTITION:
13274 			case PARTITIONS:
13275 			case TOP:
13276 			case ROW:
13277 			case ROWS:
13278 			case XOR:
13279 			case ALWAYS:
13280 			case ROLE:
13281 			case START:
13282 			case ALGORITHM:
13283 			case AUTO:
13284 			case BLOCKERS:
13285 			case CLUSTERED:
13286 			case NONCLUSTERED:
13287 			case COLUMNSTORE:
13288 			case CONTENT:
13289 			case YEARS:
13290 			case MONTHS:
13291 			case WEEKS:
13292 			case DAYS:
13293 			case MINUTES:
13294 			case DENY:
13295 			case DETERMINISTIC:
13296 			case DISTRIBUTION:
13297 			case DOCUMENT:
13298 			case DURABILITY:
13299 			case ENCRYPTED:
13300 			case FILESTREAM:
13301 			case FILETABLE:
13302 			case FILLFACTOR:
13303 			case FOLLOWING:
13304 			case HASH:
13305 			case HEAP:
13306 			case INBOUND:
13307 			case OUTBOUND:
13308 			case UNBOUNDED:
13309 			case INFINITE:
13310 			case LOGIN:
13311 			case MASKED:
13312 			case MAXDOP:
13313 			case MOVE:
13314 			case NOCHECK:
13315 			case OBJECT:
13316 			case ONLINE:
13317 			case OVER:
13318 			case PAGE:
13319 			case PAUSED:
13320 			case PERIOD:
13321 			case PERSISTED:
13322 			case PRECEDING:
13323 			case RANDOMIZED:
13324 			case RANGE:
13325 			case REBUILD:
13326 			case REPLICATE:
13327 			case REPLICATION:
13328 			case RESUMABLE:
13329 			case ROWGUIDCOL:
13330 			case SAVE:
13331 			case SELF:
13332 			case SPARSE:
13333 			case SWITCH:
13334 			case TRAN:
13335 			case TRANCOUNT:
13336 			case CONTROL:
13337 			case CONCAT:
13338 			case TAKE:
13339 			case OWNERSHIP:
13340 			case DEFINITION:
13341 			case APPLICATION:
13342 			case ASSEMBLY:
13343 			case SYMMETRIC:
13344 			case ASYMMETRIC:
13345 			case SERVER:
13346 			case RECEIVE:
13347 			case CHANGE:
13348 			case TRACE:
13349 			case TRACKING:
13350 			case RESOURCES:
13351 			case SETTINGS:
13352 			case STATE:
13353 			case AVAILABILITY:
13354 			case CREDENTIAL:
13355 			case ENDPOINT:
13356 			case EVENT:
13357 			case NOTIFICATION:
13358 			case LINKED:
13359 			case AUDIT:
13360 			case DDL:
13361 			case XML:
13362 			case IMPERSONATE:
13363 			case SECURABLES:
13364 			case AUTHENTICATE:
13365 			case EXTERNAL:
13366 			case ACCESS:
13367 			case ADMINISTER:
13368 			case BULK:
13369 			case OPERATIONS:
13370 			case UNSAFE:
13371 			case SHUTDOWN:
13372 			case SCOPED:
13373 			case CONFIGURATION:
13374 			case DATASPACE:
13375 			case SERVICE:
13376 			case CERTIFICATE:
13377 			case CONTRACT:
13378 			case ENCRYPTION:
13379 			case MASTER:
13380 			case DATA:
13381 			case SOURCE:
13382 			case FILE:
13383 			case FORMAT:
13384 			case LIBRARY:
13385 			case FULLTEXT:
13386 			case MASK:
13387 			case UNMASK:
13388 			case MESSAGE:
13389 			case REMOTE:
13390 			case BINDING:
13391 			case ROUTE:
13392 			case SECURITY:
13393 			case POLICY:
13394 			case AGGREGATE:
13395 			case QUEUE:
13396 			case RULE:
13397 			case SYNONYM:
13398 			case COLLECTION:
13399 			case SCRIPT:
13400 			case KILL:
13401 			case BACKUP:
13402 			case LOG:
13403 			case SHOWPLAN:
13404 			case SUBSCRIBE:
13405 			case QUERY:
13406 			case NOTIFICATIONS:
13407 			case CHECKPOINT:
13408 			case SEQUENCE:
13409 			case ABORT_AFTER_WAIT:
13410 			case ALLOW_PAGE_LOCKS:
13411 			case ALLOW_ROW_LOCKS:
13412 			case ALL_SPARSE_COLUMNS:
13413 			case BUCKET_COUNT:
13414 			case COLUMNSTORE_ARCHIVE:
13415 			case COLUMN_ENCRYPTION_KEY:
13416 			case COLUMN_SET:
13417 			case COMPRESSION_DELAY:
13418 			case DATABASE_DEAULT:
13419 			case DATA_COMPRESSION:
13420 			case DATA_CONSISTENCY_CHECK:
13421 			case ENCRYPTION_TYPE:
13422 			case SYSTEM_TIME:
13423 			case SYSTEM_VERSIONING:
13424 			case TEXTIMAGE_ON:
13425 			case WAIT_AT_LOW_PRIORITY:
13426 			case STATISTICS_INCREMENTAL:
13427 			case STATISTICS_NORECOMPUTE:
13428 			case ROUND_ROBIN:
13429 			case SCHEMA_AND_DATA:
13430 			case SCHEMA_ONLY:
13431 			case SORT_IN_TEMPDB:
13432 			case IGNORE_DUP_KEY:
13433 			case IMPLICIT_TRANSACTIONS:
13434 			case MAX_DURATION:
13435 			case MEMORY_OPTIMIZED:
13436 			case MIGRATION_STATE:
13437 			case PAD_INDEX:
13438 			case REMOTE_DATA_ARCHIVE:
13439 			case FILESTREAM_ON:
13440 			case FILETABLE_COLLATE_FILENAME:
13441 			case FILETABLE_DIRECTORY:
13442 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
13443 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
13444 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
13445 			case FILTER_PREDICATE:
13446 			case HISTORY_RETENTION_PERIOD:
13447 			case HISTORY_TABLE:
13448 			case LOCK_ESCALATION:
13449 			case DROP_EXISTING:
13450 			case ROW_NUMBER:
13451 			case FIRST:
13452 			case DATETIME2:
13453 			case OUTPUT:
13454 			case INSERTED:
13455 			case DELETED:
13456 			case FILENAME:
13457 			case SIZE:
13458 			case MAXSIZE:
13459 			case FILEGROWTH:
13460 			case UNLIMITED:
13461 			case KB:
13462 			case MB:
13463 			case GB:
13464 			case TB:
13465 			case CONTAINS:
13466 			case MEMORY_OPTIMIZED_DATA:
13467 			case FILEGROUP:
13468 			case NON_TRANSACTED_ACCESS:
13469 			case DB_CHAINING:
13470 			case TRUSTWORTHY:
13471 			case FORWARD_ONLY:
13472 			case KEYSET:
13473 			case FAST_FORWARD:
13474 			case SCROLL_LOCKS:
13475 			case OPTIMISTIC:
13476 			case TYPE_WARNING:
13477 			case SCHEMABINDING:
13478 			case CALLER:
13479 			case INPUT:
13480 			case OWNER:
13481 			case SNAPSHOT:
13482 			case REPEATABLE:
13483 			case SERIALIZABLE:
13484 			case NATIVE_COMPILATION:
13485 			case VIEW_METADATA:
13486 			case INSTEAD:
13487 			case APPEND:
13488 			case INCREMENT:
13489 			case CACHE:
13490 			case MINVALUE:
13491 			case MAXVALUE:
13492 			case RESTART:
13493 			case LOB_COMPACTION:
13494 			case COMPRESS_ALL_ROW_GROUPS:
13495 			case REORGANIZE:
13496 			case RESUME:
13497 			case PAUSE:
13498 			case ABORT:
13499 			case ACCELERATED_DATABASE_RECOVERY:
13500 			case PERSISTENT_VERSION_STORE_FILEGROUP:
13501 			case IMMEDIATE:
13502 			case NO_WAIT:
13503 			case TARGET_RECOVERY_TIME:
13504 			case SECONDS:
13505 			case HONOR_BROKER_PRIORITY:
13506 			case ERROR_BROKER_CONVERSATIONS:
13507 			case NEW_BROKER:
13508 			case DISABLE_BROKER:
13509 			case ENABLE_BROKER:
13510 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
13511 			case READ_COMMITTED_SNAPSHOT:
13512 			case ALLOW_SNAPSHOT_ISOLATION:
13513 			case RECURSIVE_TRIGGERS:
13514 			case QUOTED_IDENTIFIER:
13515 			case NUMERIC_ROUNDABORT:
13516 			case CONCAT_NULL_YIELDS_NULL:
13517 			case COMPATIBILITY_LEVEL:
13518 			case ARITHABORT:
13519 			case ANSI_WARNINGS:
13520 			case ANSI_PADDING:
13521 			case ANSI_NULLS:
13522 			case ANSI_NULL_DEFAULT:
13523 			case PAGE_VERIFY:
13524 			case CHECKSUM:
13525 			case TORN_PAGE_DETECTION:
13526 			case BULK_LOGGED:
13527 			case RECOVERY:
13528 			case TOTAL_EXECUTION_CPU_TIME_MS:
13529 			case TOTAL_COMPILE_CPU_TIME_MS:
13530 			case STALE_CAPTURE_POLICY_THRESHOLD:
13531 			case EXECUTION_COUNT:
13532 			case QUERY_CAPTURE_POLICY:
13533 			case WAIT_STATS_CAPTURE_MODE:
13534 			case MAX_PLANS_PER_QUERY:
13535 			case QUERY_CAPTURE_MODE:
13536 			case SIZE_BASED_CLEANUP_MODE:
13537 			case INTERVAL_LENGTH_MINUTES:
13538 			case MAX_STORAGE_SIZE_MB:
13539 			case DATA_FLUSH_INTERVAL_SECONDS:
13540 			case CLEANUP_POLICY:
13541 			case CUSTOM:
13542 			case STALE_QUERY_THRESHOLD_DAYS:
13543 			case OPERATION_MODE:
13544 			case QUERY_STORE:
13545 			case CURSOR_DEFAULT:
13546 			case GLOBAL:
13547 			case CURSOR_CLOSE_ON_COMMIT:
13548 			case HOURS:
13549 			case CHANGE_RETENTION:
13550 			case AUTO_CLEANUP:
13551 			case CHANGE_TRACKING:
13552 			case AUTOMATIC_TUNING:
13553 			case FORCE_LAST_GOOD_PLAN:
13554 			case AUTO_UPDATE_STATISTICS_ASYNC:
13555 			case AUTO_UPDATE_STATISTICS:
13556 			case AUTO_SHRINK:
13557 			case AUTO_CREATE_STATISTICS:
13558 			case INCREMENTAL:
13559 			case AUTO_CLOSE:
13560 			case DATA_RETENTION:
13561 			case TEMPORAL_HISTORY_RETENTION:
13562 			case EDITION:
13563 			case MIXED_PAGE_ALLOCATION:
13564 			case DISABLED:
13565 			case ALLOWED:
13566 			case HADR:
13567 			case MULTI_USER:
13568 			case RESTRICTED_USER:
13569 			case SINGLE_USER:
13570 			case OFFLINE:
13571 			case EMERGENCY:
13572 			case SUSPEND:
13573 			case DATE_CORRELATION_OPTIMIZATION:
13574 			case ELASTIC_POOL:
13575 			case SERVICE_OBJECTIVE:
13576 			case DATABASE_NAME:
13577 			case ALLOW_CONNECTIONS:
13578 			case GEO:
13579 			case NAMED:
13580 			case DATEFIRST:
13581 			case BACKUP_STORAGE_REDUNDANCY:
13582 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
13583 			case SECONDARY:
13584 			case FAILOVER:
13585 			case DEFAULT_FULLTEXT_LANGUAGE:
13586 			case DEFAULT_LANGUAGE:
13587 			case INLINE:
13588 			case NESTED_TRIGGERS:
13589 			case TRANSFORM_NOISE_WORDS:
13590 			case TWO_DIGIT_YEAR_CUTOFF:
13591 			case PERSISTENT_LOG_BUFFER:
13592 			case DIRECTORY_NAME:
13593 			case DATEFORMAT:
13594 			case DELAYED_DURABILITY:
13595 			case AUTHORIZATION:
13596 			case TRANSFER:
13597 			case PROVIDER:
13598 			case SEARCH:
13599 			case MEMBER:
13600 			case IDENTIFIER_:
13601 			case DELIMITED_IDENTIFIER_:
13602 				{
13603 				setState(2198);
13604 				indexName();
13605 				}
13606 				break;
13607 			case ALL:
13608 				{
13609 				setState(2199);
13610 				match(ALL);
13611 				}
13612 				break;
13613 			default:
13614 				throw new NoViableAltException(this);
13615 			}
13616 			setState(2202);
13617 			match(ON);
13618 			setState(2203);
13619 			tableName();
13620 			setState(2204);
13621 			alterIndexClause();
13622 			}
13623 		}
13624 		catch (RecognitionException re) {
13625 			_localctx.exception = re;
13626 			_errHandler.reportError(this, re);
13627 			_errHandler.recover(this, re);
13628 		}
13629 		finally {
13630 			exitRule();
13631 		}
13632 		return _localctx;
13633 	}
13634 
13635 	public static class AlterDatabaseContext extends ParserRuleContext {
13636 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13637 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13638 		public DatabaseNameContext databaseName() {
13639 			return getRuleContext(DatabaseNameContext.class,0);
13640 		}
13641 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
13642 		public List<AlterDatabaseClauseContext> alterDatabaseClause() {
13643 			return getRuleContexts(AlterDatabaseClauseContext.class);
13644 		}
13645 		public AlterDatabaseClauseContext alterDatabaseClause(int i) {
13646 			return getRuleContext(AlterDatabaseClauseContext.class,i);
13647 		}
13648 		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
13649 			super(parent, invokingState);
13650 		}
13651 		@Override public int getRuleIndex() { return RULE_alterDatabase; }
13652 		@Override
13653 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13654 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabase(this);
13655 			else return visitor.visitChildren(this);
13656 		}
13657 	}
13658 
13659 	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
13660 		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
13661 		enterRule(_localctx, 284, RULE_alterDatabase);
13662 		int _la;
13663 		try {
13664 			enterOuterAlt(_localctx, 1);
13665 			{
13666 			setState(2206);
13667 			match(ALTER);
13668 			setState(2207);
13669 			match(DATABASE);
13670 			setState(2210);
13671 			_errHandler.sync(this);
13672 			switch (_input.LA(1)) {
13673 			case TRUNCATE:
13674 			case SCHEMA:
13675 			case COLUMNS:
13676 			case PRECISION:
13677 			case FUNCTION:
13678 			case TRIGGER:
13679 			case CAST:
13680 			case TRIM:
13681 			case SUBSTRING:
13682 			case OFF:
13683 			case GROUP:
13684 			case LIMIT:
13685 			case OFFSET:
13686 			case SAVEPOINT:
13687 			case BOOLEAN:
13688 			case ARRAY:
13689 			case DATE:
13690 			case TIMESTAMP:
13691 			case LOCALTIME:
13692 			case LOCALTIMESTAMP:
13693 			case YEAR:
13694 			case QUARTER:
13695 			case MONTH:
13696 			case WEEK:
13697 			case DAY:
13698 			case SECOND:
13699 			case MICROSECOND:
13700 			case MAX:
13701 			case MIN:
13702 			case SUM:
13703 			case COUNT:
13704 			case AVG:
13705 			case ENABLE:
13706 			case DISABLE:
13707 			case INSTANCE:
13708 			case DO:
13709 			case DEFINER:
13710 			case SQL:
13711 			case CASCADED:
13712 			case LOCAL:
13713 			case NEXT:
13714 			case NAME:
13715 			case INTEGER:
13716 			case TYPE:
13717 			case TEXT:
13718 			case VIEWS:
13719 			case READ_ONLY:
13720 			case DATABASE:
13721 			case RETURNS:
13722 			case DATEPART:
13723 			case PASSWORD:
13724 			case BINARY:
13725 			case HIDDEN_:
13726 			case MOD:
13727 			case PARTITION:
13728 			case PARTITIONS:
13729 			case TOP:
13730 			case ROW:
13731 			case ROWS:
13732 			case XOR:
13733 			case ALWAYS:
13734 			case ROLE:
13735 			case START:
13736 			case ALGORITHM:
13737 			case AUTO:
13738 			case BLOCKERS:
13739 			case CLUSTERED:
13740 			case NONCLUSTERED:
13741 			case COLUMNSTORE:
13742 			case CONTENT:
13743 			case YEARS:
13744 			case MONTHS:
13745 			case WEEKS:
13746 			case DAYS:
13747 			case MINUTES:
13748 			case DENY:
13749 			case DETERMINISTIC:
13750 			case DISTRIBUTION:
13751 			case DOCUMENT:
13752 			case DURABILITY:
13753 			case ENCRYPTED:
13754 			case FILESTREAM:
13755 			case FILETABLE:
13756 			case FILLFACTOR:
13757 			case FOLLOWING:
13758 			case HASH:
13759 			case HEAP:
13760 			case INBOUND:
13761 			case OUTBOUND:
13762 			case UNBOUNDED:
13763 			case INFINITE:
13764 			case LOGIN:
13765 			case MASKED:
13766 			case MAXDOP:
13767 			case MOVE:
13768 			case NOCHECK:
13769 			case OBJECT:
13770 			case ONLINE:
13771 			case OVER:
13772 			case PAGE:
13773 			case PAUSED:
13774 			case PERIOD:
13775 			case PERSISTED:
13776 			case PRECEDING:
13777 			case RANDOMIZED:
13778 			case RANGE:
13779 			case REBUILD:
13780 			case REPLICATE:
13781 			case REPLICATION:
13782 			case RESUMABLE:
13783 			case ROWGUIDCOL:
13784 			case SAVE:
13785 			case SELF:
13786 			case SPARSE:
13787 			case SWITCH:
13788 			case TRAN:
13789 			case TRANCOUNT:
13790 			case CONTROL:
13791 			case CONCAT:
13792 			case TAKE:
13793 			case OWNERSHIP:
13794 			case DEFINITION:
13795 			case APPLICATION:
13796 			case ASSEMBLY:
13797 			case SYMMETRIC:
13798 			case ASYMMETRIC:
13799 			case SERVER:
13800 			case RECEIVE:
13801 			case CHANGE:
13802 			case TRACE:
13803 			case TRACKING:
13804 			case RESOURCES:
13805 			case SETTINGS:
13806 			case STATE:
13807 			case AVAILABILITY:
13808 			case CREDENTIAL:
13809 			case ENDPOINT:
13810 			case EVENT:
13811 			case NOTIFICATION:
13812 			case LINKED:
13813 			case AUDIT:
13814 			case DDL:
13815 			case XML:
13816 			case IMPERSONATE:
13817 			case SECURABLES:
13818 			case AUTHENTICATE:
13819 			case EXTERNAL:
13820 			case ACCESS:
13821 			case ADMINISTER:
13822 			case BULK:
13823 			case OPERATIONS:
13824 			case UNSAFE:
13825 			case SHUTDOWN:
13826 			case SCOPED:
13827 			case CONFIGURATION:
13828 			case DATASPACE:
13829 			case SERVICE:
13830 			case CERTIFICATE:
13831 			case CONTRACT:
13832 			case ENCRYPTION:
13833 			case MASTER:
13834 			case DATA:
13835 			case SOURCE:
13836 			case FILE:
13837 			case FORMAT:
13838 			case LIBRARY:
13839 			case FULLTEXT:
13840 			case MASK:
13841 			case UNMASK:
13842 			case MESSAGE:
13843 			case REMOTE:
13844 			case BINDING:
13845 			case ROUTE:
13846 			case SECURITY:
13847 			case POLICY:
13848 			case AGGREGATE:
13849 			case QUEUE:
13850 			case RULE:
13851 			case SYNONYM:
13852 			case COLLECTION:
13853 			case SCRIPT:
13854 			case KILL:
13855 			case BACKUP:
13856 			case LOG:
13857 			case SHOWPLAN:
13858 			case SUBSCRIBE:
13859 			case QUERY:
13860 			case NOTIFICATIONS:
13861 			case CHECKPOINT:
13862 			case SEQUENCE:
13863 			case ABORT_AFTER_WAIT:
13864 			case ALLOW_PAGE_LOCKS:
13865 			case ALLOW_ROW_LOCKS:
13866 			case ALL_SPARSE_COLUMNS:
13867 			case BUCKET_COUNT:
13868 			case COLUMNSTORE_ARCHIVE:
13869 			case COLUMN_ENCRYPTION_KEY:
13870 			case COLUMN_SET:
13871 			case COMPRESSION_DELAY:
13872 			case DATABASE_DEAULT:
13873 			case DATA_COMPRESSION:
13874 			case DATA_CONSISTENCY_CHECK:
13875 			case ENCRYPTION_TYPE:
13876 			case SYSTEM_TIME:
13877 			case SYSTEM_VERSIONING:
13878 			case TEXTIMAGE_ON:
13879 			case WAIT_AT_LOW_PRIORITY:
13880 			case STATISTICS_INCREMENTAL:
13881 			case STATISTICS_NORECOMPUTE:
13882 			case ROUND_ROBIN:
13883 			case SCHEMA_AND_DATA:
13884 			case SCHEMA_ONLY:
13885 			case SORT_IN_TEMPDB:
13886 			case IGNORE_DUP_KEY:
13887 			case IMPLICIT_TRANSACTIONS:
13888 			case MAX_DURATION:
13889 			case MEMORY_OPTIMIZED:
13890 			case MIGRATION_STATE:
13891 			case PAD_INDEX:
13892 			case REMOTE_DATA_ARCHIVE:
13893 			case FILESTREAM_ON:
13894 			case FILETABLE_COLLATE_FILENAME:
13895 			case FILETABLE_DIRECTORY:
13896 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
13897 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
13898 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
13899 			case FILTER_PREDICATE:
13900 			case HISTORY_RETENTION_PERIOD:
13901 			case HISTORY_TABLE:
13902 			case LOCK_ESCALATION:
13903 			case DROP_EXISTING:
13904 			case ROW_NUMBER:
13905 			case FIRST:
13906 			case DATETIME2:
13907 			case OUTPUT:
13908 			case INSERTED:
13909 			case DELETED:
13910 			case FILENAME:
13911 			case SIZE:
13912 			case MAXSIZE:
13913 			case FILEGROWTH:
13914 			case UNLIMITED:
13915 			case KB:
13916 			case MB:
13917 			case GB:
13918 			case TB:
13919 			case CONTAINS:
13920 			case MEMORY_OPTIMIZED_DATA:
13921 			case FILEGROUP:
13922 			case NON_TRANSACTED_ACCESS:
13923 			case DB_CHAINING:
13924 			case TRUSTWORTHY:
13925 			case FORWARD_ONLY:
13926 			case KEYSET:
13927 			case FAST_FORWARD:
13928 			case SCROLL_LOCKS:
13929 			case OPTIMISTIC:
13930 			case TYPE_WARNING:
13931 			case SCHEMABINDING:
13932 			case CALLER:
13933 			case INPUT:
13934 			case OWNER:
13935 			case SNAPSHOT:
13936 			case REPEATABLE:
13937 			case SERIALIZABLE:
13938 			case NATIVE_COMPILATION:
13939 			case VIEW_METADATA:
13940 			case INSTEAD:
13941 			case APPEND:
13942 			case INCREMENT:
13943 			case CACHE:
13944 			case MINVALUE:
13945 			case MAXVALUE:
13946 			case RESTART:
13947 			case LOB_COMPACTION:
13948 			case COMPRESS_ALL_ROW_GROUPS:
13949 			case REORGANIZE:
13950 			case RESUME:
13951 			case PAUSE:
13952 			case ABORT:
13953 			case ACCELERATED_DATABASE_RECOVERY:
13954 			case PERSISTENT_VERSION_STORE_FILEGROUP:
13955 			case IMMEDIATE:
13956 			case NO_WAIT:
13957 			case TARGET_RECOVERY_TIME:
13958 			case SECONDS:
13959 			case HONOR_BROKER_PRIORITY:
13960 			case ERROR_BROKER_CONVERSATIONS:
13961 			case NEW_BROKER:
13962 			case DISABLE_BROKER:
13963 			case ENABLE_BROKER:
13964 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
13965 			case READ_COMMITTED_SNAPSHOT:
13966 			case ALLOW_SNAPSHOT_ISOLATION:
13967 			case RECURSIVE_TRIGGERS:
13968 			case QUOTED_IDENTIFIER:
13969 			case NUMERIC_ROUNDABORT:
13970 			case CONCAT_NULL_YIELDS_NULL:
13971 			case COMPATIBILITY_LEVEL:
13972 			case ARITHABORT:
13973 			case ANSI_WARNINGS:
13974 			case ANSI_PADDING:
13975 			case ANSI_NULLS:
13976 			case ANSI_NULL_DEFAULT:
13977 			case PAGE_VERIFY:
13978 			case CHECKSUM:
13979 			case TORN_PAGE_DETECTION:
13980 			case BULK_LOGGED:
13981 			case RECOVERY:
13982 			case TOTAL_EXECUTION_CPU_TIME_MS:
13983 			case TOTAL_COMPILE_CPU_TIME_MS:
13984 			case STALE_CAPTURE_POLICY_THRESHOLD:
13985 			case EXECUTION_COUNT:
13986 			case QUERY_CAPTURE_POLICY:
13987 			case WAIT_STATS_CAPTURE_MODE:
13988 			case MAX_PLANS_PER_QUERY:
13989 			case QUERY_CAPTURE_MODE:
13990 			case SIZE_BASED_CLEANUP_MODE:
13991 			case INTERVAL_LENGTH_MINUTES:
13992 			case MAX_STORAGE_SIZE_MB:
13993 			case DATA_FLUSH_INTERVAL_SECONDS:
13994 			case CLEANUP_POLICY:
13995 			case CUSTOM:
13996 			case STALE_QUERY_THRESHOLD_DAYS:
13997 			case OPERATION_MODE:
13998 			case QUERY_STORE:
13999 			case CURSOR_DEFAULT:
14000 			case GLOBAL:
14001 			case CURSOR_CLOSE_ON_COMMIT:
14002 			case HOURS:
14003 			case CHANGE_RETENTION:
14004 			case AUTO_CLEANUP:
14005 			case CHANGE_TRACKING:
14006 			case AUTOMATIC_TUNING:
14007 			case FORCE_LAST_GOOD_PLAN:
14008 			case AUTO_UPDATE_STATISTICS_ASYNC:
14009 			case AUTO_UPDATE_STATISTICS:
14010 			case AUTO_SHRINK:
14011 			case AUTO_CREATE_STATISTICS:
14012 			case INCREMENTAL:
14013 			case AUTO_CLOSE:
14014 			case DATA_RETENTION:
14015 			case TEMPORAL_HISTORY_RETENTION:
14016 			case EDITION:
14017 			case MIXED_PAGE_ALLOCATION:
14018 			case DISABLED:
14019 			case ALLOWED:
14020 			case HADR:
14021 			case MULTI_USER:
14022 			case RESTRICTED_USER:
14023 			case SINGLE_USER:
14024 			case OFFLINE:
14025 			case EMERGENCY:
14026 			case SUSPEND:
14027 			case DATE_CORRELATION_OPTIMIZATION:
14028 			case ELASTIC_POOL:
14029 			case SERVICE_OBJECTIVE:
14030 			case DATABASE_NAME:
14031 			case ALLOW_CONNECTIONS:
14032 			case GEO:
14033 			case NAMED:
14034 			case DATEFIRST:
14035 			case BACKUP_STORAGE_REDUNDANCY:
14036 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
14037 			case SECONDARY:
14038 			case FAILOVER:
14039 			case DEFAULT_FULLTEXT_LANGUAGE:
14040 			case DEFAULT_LANGUAGE:
14041 			case INLINE:
14042 			case NESTED_TRIGGERS:
14043 			case TRANSFORM_NOISE_WORDS:
14044 			case TWO_DIGIT_YEAR_CUTOFF:
14045 			case PERSISTENT_LOG_BUFFER:
14046 			case DIRECTORY_NAME:
14047 			case DATEFORMAT:
14048 			case DELAYED_DURABILITY:
14049 			case AUTHORIZATION:
14050 			case TRANSFER:
14051 			case PROVIDER:
14052 			case SEARCH:
14053 			case MEMBER:
14054 			case IDENTIFIER_:
14055 			case DELIMITED_IDENTIFIER_:
14056 				{
14057 				setState(2208);
14058 				databaseName();
14059 				}
14060 				break;
14061 			case CURRENT:
14062 				{
14063 				setState(2209);
14064 				match(CURRENT);
14065 				}
14066 				break;
14067 			default:
14068 				throw new NoViableAltException(this);
14069 			}
14070 			setState(2215);
14071 			_errHandler.sync(this);
14072 			_la = _input.LA(1);
14073 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << ADD) | (1L << SET))) != 0) || ((((_la - 154)) & ~0x3f) == 0 && ((1L << (_la - 154)) & ((1L << (DEFAULT - 154)) | (1L << (NAME - 154)) | (1L << (READ_ONLY - 154)) | (1L << (READONLY - 154)))) != 0) || _la==COLLATE || ((((_la - 564)) & ~0x3f) == 0 && ((1L << (_la - 564)) & ((1L << (REMOVE - 564)) | (1L << (AUTOGROW_SINGLE_FILE - 564)) | (1L << (AUTOGROW_ALL_FILES - 564)) | (1L << (READWRITE - 564)) | (1L << (READ_WRITE - 564)) | (1L << (MODIFY - 564)))) != 0) || _la==FORCE_FAILOVER_ALLOW_DATA_LOSS || _la==FAILOVER) {
14074 				{
14075 				{
14076 				setState(2212);
14077 				alterDatabaseClause();
14078 				}
14079 				}
14080 				setState(2217);
14081 				_errHandler.sync(this);
14082 				_la = _input.LA(1);
14083 			}
14084 			}
14085 		}
14086 		catch (RecognitionException re) {
14087 			_localctx.exception = re;
14088 			_errHandler.reportError(this, re);
14089 			_errHandler.recover(this, re);
14090 		}
14091 		finally {
14092 			exitRule();
14093 		}
14094 		return _localctx;
14095 	}
14096 
14097 	public static class AlterProcedureContext extends ParserRuleContext {
14098 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14099 		public ProcedureNameContext procedureName() {
14100 			return getRuleContext(ProcedureNameContext.class,0);
14101 		}
14102 		public ProcParametersContext procParameters() {
14103 			return getRuleContext(ProcParametersContext.class,0);
14104 		}
14105 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
14106 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
14107 		}
14108 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
14109 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
14110 		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
14111 			super(parent, invokingState);
14112 		}
14113 		@Override public int getRuleIndex() { return RULE_alterProcedure; }
14114 		@Override
14115 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14116 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterProcedure(this);
14117 			else return visitor.visitChildren(this);
14118 		}
14119 	}
14120 
14121 	public final AlterProcedureContext alterProcedure() throws RecognitionException {
14122 		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
14123 		enterRule(_localctx, 286, RULE_alterProcedure);
14124 		int _la;
14125 		try {
14126 			enterOuterAlt(_localctx, 1);
14127 			{
14128 			setState(2218);
14129 			match(ALTER);
14130 			setState(2219);
14131 			_la = _input.LA(1);
14132 			if ( !(_la==PROCEDURE || _la==PROC) ) {
14133 			_errHandler.recoverInline(this);
14134 			}
14135 			else {
14136 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14137 				_errHandler.reportMatch(this);
14138 				consume();
14139 			}
14140 			setState(2220);
14141 			procedureName();
14142 			setState(2221);
14143 			procParameters();
14144 			setState(2222);
14145 			createOrAlterProcClause();
14146 			}
14147 		}
14148 		catch (RecognitionException re) {
14149 			_localctx.exception = re;
14150 			_errHandler.reportError(this, re);
14151 			_errHandler.recover(this, re);
14152 		}
14153 		finally {
14154 			exitRule();
14155 		}
14156 		return _localctx;
14157 	}
14158 
14159 	public static class AlterFunctionContext extends ParserRuleContext {
14160 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14161 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14162 		public FunctionNameContext functionName() {
14163 			return getRuleContext(FunctionNameContext.class,0);
14164 		}
14165 		public FuncParametersContext funcParameters() {
14166 			return getRuleContext(FuncParametersContext.class,0);
14167 		}
14168 		public FuncReturnsContext funcReturns() {
14169 			return getRuleContext(FuncReturnsContext.class,0);
14170 		}
14171 		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
14172 			super(parent, invokingState);
14173 		}
14174 		@Override public int getRuleIndex() { return RULE_alterFunction; }
14175 		@Override
14176 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14177 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterFunction(this);
14178 			else return visitor.visitChildren(this);
14179 		}
14180 	}
14181 
14182 	public final AlterFunctionContext alterFunction() throws RecognitionException {
14183 		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
14184 		enterRule(_localctx, 288, RULE_alterFunction);
14185 		try {
14186 			enterOuterAlt(_localctx, 1);
14187 			{
14188 			setState(2224);
14189 			match(ALTER);
14190 			setState(2225);
14191 			match(FUNCTION);
14192 			setState(2226);
14193 			functionName();
14194 			setState(2227);
14195 			funcParameters();
14196 			setState(2228);
14197 			funcReturns();
14198 			}
14199 		}
14200 		catch (RecognitionException re) {
14201 			_localctx.exception = re;
14202 			_errHandler.reportError(this, re);
14203 			_errHandler.recover(this, re);
14204 		}
14205 		finally {
14206 			exitRule();
14207 		}
14208 		return _localctx;
14209 	}
14210 
14211 	public static class AlterViewContext extends ParserRuleContext {
14212 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14213 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
14214 		public ViewNameContext viewName() {
14215 			return getRuleContext(ViewNameContext.class,0);
14216 		}
14217 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
14218 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
14219 		}
14220 		public AlterViewContext(ParserRuleContext parent, int invokingState) {
14221 			super(parent, invokingState);
14222 		}
14223 		@Override public int getRuleIndex() { return RULE_alterView; }
14224 		@Override
14225 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14226 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterView(this);
14227 			else return visitor.visitChildren(this);
14228 		}
14229 	}
14230 
14231 	public final AlterViewContext alterView() throws RecognitionException {
14232 		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
14233 		enterRule(_localctx, 290, RULE_alterView);
14234 		try {
14235 			enterOuterAlt(_localctx, 1);
14236 			{
14237 			setState(2230);
14238 			match(ALTER);
14239 			setState(2231);
14240 			match(VIEW);
14241 			setState(2232);
14242 			viewName();
14243 			setState(2233);
14244 			createOrAlterViewClause();
14245 			}
14246 		}
14247 		catch (RecognitionException re) {
14248 			_localctx.exception = re;
14249 			_errHandler.reportError(this, re);
14250 			_errHandler.recover(this, re);
14251 		}
14252 		finally {
14253 			exitRule();
14254 		}
14255 		return _localctx;
14256 	}
14257 
14258 	public static class AlterTriggerContext extends ParserRuleContext {
14259 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14260 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
14261 		public TriggerNameContext triggerName() {
14262 			return getRuleContext(TriggerNameContext.class,0);
14263 		}
14264 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14265 		public TriggerTargetContext triggerTarget() {
14266 			return getRuleContext(TriggerTargetContext.class,0);
14267 		}
14268 		public CreateTriggerClauseContext createTriggerClause() {
14269 			return getRuleContext(CreateTriggerClauseContext.class,0);
14270 		}
14271 		public AlterTriggerContext(ParserRuleContext parent, int invokingState) {
14272 			super(parent, invokingState);
14273 		}
14274 		@Override public int getRuleIndex() { return RULE_alterTrigger; }
14275 		@Override
14276 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14277 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTrigger(this);
14278 			else return visitor.visitChildren(this);
14279 		}
14280 	}
14281 
14282 	public final AlterTriggerContext alterTrigger() throws RecognitionException {
14283 		AlterTriggerContext _localctx = new AlterTriggerContext(_ctx, getState());
14284 		enterRule(_localctx, 292, RULE_alterTrigger);
14285 		try {
14286 			enterOuterAlt(_localctx, 1);
14287 			{
14288 			setState(2235);
14289 			match(ALTER);
14290 			setState(2236);
14291 			match(TRIGGER);
14292 			setState(2237);
14293 			triggerName();
14294 			setState(2238);
14295 			match(ON);
14296 			setState(2239);
14297 			triggerTarget();
14298 			setState(2240);
14299 			createTriggerClause();
14300 			}
14301 		}
14302 		catch (RecognitionException re) {
14303 			_localctx.exception = re;
14304 			_errHandler.reportError(this, re);
14305 			_errHandler.recover(this, re);
14306 		}
14307 		finally {
14308 			exitRule();
14309 		}
14310 		return _localctx;
14311 	}
14312 
14313 	public static class AlterSequenceContext extends ParserRuleContext {
14314 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14315 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
14316 		public SequenceNameContext sequenceName() {
14317 			return getRuleContext(SequenceNameContext.class,0);
14318 		}
14319 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
14320 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
14321 		}
14322 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
14323 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
14324 		}
14325 		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
14326 			super(parent, invokingState);
14327 		}
14328 		@Override public int getRuleIndex() { return RULE_alterSequence; }
14329 		@Override
14330 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14331 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSequence(this);
14332 			else return visitor.visitChildren(this);
14333 		}
14334 	}
14335 
14336 	public final AlterSequenceContext alterSequence() throws RecognitionException {
14337 		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
14338 		enterRule(_localctx, 294, RULE_alterSequence);
14339 		int _la;
14340 		try {
14341 			enterOuterAlt(_localctx, 1);
14342 			{
14343 			setState(2242);
14344 			match(ALTER);
14345 			setState(2243);
14346 			match(SEQUENCE);
14347 			setState(2244);
14348 			sequenceName();
14349 			setState(2248);
14350 			_errHandler.sync(this);
14351 			_la = _input.LA(1);
14352 			while (_la==AS || _la==NO || _la==START || ((((_la - 548)) & ~0x3f) == 0 && ((1L << (_la - 548)) & ((1L << (INCREMENT - 548)) | (1L << (CYCLE - 548)) | (1L << (CACHE - 548)) | (1L << (MINVALUE - 548)) | (1L << (MAXVALUE - 548)) | (1L << (RESTART - 548)))) != 0)) {
14353 				{
14354 				{
14355 				setState(2245);
14356 				createOrAlterSequenceClause();
14357 				}
14358 				}
14359 				setState(2250);
14360 				_errHandler.sync(this);
14361 				_la = _input.LA(1);
14362 			}
14363 			}
14364 		}
14365 		catch (RecognitionException re) {
14366 			_localctx.exception = re;
14367 			_errHandler.reportError(this, re);
14368 			_errHandler.recover(this, re);
14369 		}
14370 		finally {
14371 			exitRule();
14372 		}
14373 		return _localctx;
14374 	}
14375 
14376 	public static class AlterServiceContext extends ParserRuleContext {
14377 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14378 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
14379 		public ServiceNameContext serviceName() {
14380 			return getRuleContext(ServiceNameContext.class,0);
14381 		}
14382 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14383 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
14384 		public QueueNameContext queueName() {
14385 			return getRuleContext(QueueNameContext.class,0);
14386 		}
14387 		public AlterServiceClauseContext alterServiceClause() {
14388 			return getRuleContext(AlterServiceClauseContext.class,0);
14389 		}
14390 		public AlterServiceContext(ParserRuleContext parent, int invokingState) {
14391 			super(parent, invokingState);
14392 		}
14393 		@Override public int getRuleIndex() { return RULE_alterService; }
14394 		@Override
14395 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14396 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterService(this);
14397 			else return visitor.visitChildren(this);
14398 		}
14399 	}
14400 
14401 	public final AlterServiceContext alterService() throws RecognitionException {
14402 		AlterServiceContext _localctx = new AlterServiceContext(_ctx, getState());
14403 		enterRule(_localctx, 296, RULE_alterService);
14404 		int _la;
14405 		try {
14406 			enterOuterAlt(_localctx, 1);
14407 			{
14408 			setState(2251);
14409 			match(ALTER);
14410 			setState(2252);
14411 			match(SERVICE);
14412 			setState(2253);
14413 			serviceName();
14414 			setState(2257);
14415 			_errHandler.sync(this);
14416 			_la = _input.LA(1);
14417 			if (_la==ON) {
14418 				{
14419 				setState(2254);
14420 				match(ON);
14421 				setState(2255);
14422 				match(QUEUE);
14423 				setState(2256);
14424 				queueName();
14425 				}
14426 			}
14427 
14428 			setState(2260);
14429 			_errHandler.sync(this);
14430 			_la = _input.LA(1);
14431 			if (_la==LP_) {
14432 				{
14433 				setState(2259);
14434 				alterServiceClause();
14435 				}
14436 			}
14437 
14438 			}
14439 		}
14440 		catch (RecognitionException re) {
14441 			_localctx.exception = re;
14442 			_errHandler.reportError(this, re);
14443 			_errHandler.recover(this, re);
14444 		}
14445 		finally {
14446 			exitRule();
14447 		}
14448 		return _localctx;
14449 	}
14450 
14451 	public static class AlterSchemaContext extends ParserRuleContext {
14452 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14453 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
14454 		public SchemaNameContext schemaName() {
14455 			return getRuleContext(SchemaNameContext.class,0);
14456 		}
14457 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
14458 		public IgnoredIdentifierContext ignoredIdentifier() {
14459 			return getRuleContext(IgnoredIdentifierContext.class,0);
14460 		}
14461 		public Class_Context class_() {
14462 			return getRuleContext(Class_Context.class,0);
14463 		}
14464 		public AlterSchemaContext(ParserRuleContext parent, int invokingState) {
14465 			super(parent, invokingState);
14466 		}
14467 		@Override public int getRuleIndex() { return RULE_alterSchema; }
14468 		@Override
14469 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14470 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSchema(this);
14471 			else return visitor.visitChildren(this);
14472 		}
14473 	}
14474 
14475 	public final AlterSchemaContext alterSchema() throws RecognitionException {
14476 		AlterSchemaContext _localctx = new AlterSchemaContext(_ctx, getState());
14477 		enterRule(_localctx, 298, RULE_alterSchema);
14478 		try {
14479 			enterOuterAlt(_localctx, 1);
14480 			{
14481 			setState(2262);
14482 			match(ALTER);
14483 			setState(2263);
14484 			match(SCHEMA);
14485 			setState(2264);
14486 			schemaName();
14487 			setState(2265);
14488 			match(TRANSFER);
14489 			setState(2267);
14490 			_errHandler.sync(this);
14491 			switch ( getInterpreter().adaptivePredict(_input,147,_ctx) ) {
14492 			case 1:
14493 				{
14494 				setState(2266);
14495 				class_();
14496 				}
14497 				break;
14498 			}
14499 			setState(2269);
14500 			ignoredIdentifier();
14501 			}
14502 		}
14503 		catch (RecognitionException re) {
14504 			_localctx.exception = re;
14505 			_errHandler.reportError(this, re);
14506 			_errHandler.recover(this, re);
14507 		}
14508 		finally {
14509 			exitRule();
14510 		}
14511 		return _localctx;
14512 	}
14513 
14514 	public static class DropTableContext extends ParserRuleContext {
14515 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14516 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
14517 		public TableNamesContext tableNames() {
14518 			return getRuleContext(TableNamesContext.class,0);
14519 		}
14520 		public IfExistsContext ifExists() {
14521 			return getRuleContext(IfExistsContext.class,0);
14522 		}
14523 		public DropTableContext(ParserRuleContext parent, int invokingState) {
14524 			super(parent, invokingState);
14525 		}
14526 		@Override public int getRuleIndex() { return RULE_dropTable; }
14527 		@Override
14528 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14529 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTable(this);
14530 			else return visitor.visitChildren(this);
14531 		}
14532 	}
14533 
14534 	public final DropTableContext dropTable() throws RecognitionException {
14535 		DropTableContext _localctx = new DropTableContext(_ctx, getState());
14536 		enterRule(_localctx, 300, RULE_dropTable);
14537 		int _la;
14538 		try {
14539 			enterOuterAlt(_localctx, 1);
14540 			{
14541 			setState(2271);
14542 			match(DROP);
14543 			setState(2272);
14544 			match(TABLE);
14545 			setState(2274);
14546 			_errHandler.sync(this);
14547 			_la = _input.LA(1);
14548 			if (_la==IF) {
14549 				{
14550 				setState(2273);
14551 				ifExists();
14552 				}
14553 			}
14554 
14555 			setState(2276);
14556 			tableNames();
14557 			}
14558 		}
14559 		catch (RecognitionException re) {
14560 			_localctx.exception = re;
14561 			_errHandler.reportError(this, re);
14562 			_errHandler.recover(this, re);
14563 		}
14564 		finally {
14565 			exitRule();
14566 		}
14567 		return _localctx;
14568 	}
14569 
14570 	public static class DropIndexContext extends ParserRuleContext {
14571 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14572 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
14573 		public IndexNameContext indexName() {
14574 			return getRuleContext(IndexNameContext.class,0);
14575 		}
14576 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14577 		public TableNameContext tableName() {
14578 			return getRuleContext(TableNameContext.class,0);
14579 		}
14580 		public IfExistsContext ifExists() {
14581 			return getRuleContext(IfExistsContext.class,0);
14582 		}
14583 		public DropIndexContext(ParserRuleContext parent, int invokingState) {
14584 			super(parent, invokingState);
14585 		}
14586 		@Override public int getRuleIndex() { return RULE_dropIndex; }
14587 		@Override
14588 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14589 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndex(this);
14590 			else return visitor.visitChildren(this);
14591 		}
14592 	}
14593 
14594 	public final DropIndexContext dropIndex() throws RecognitionException {
14595 		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
14596 		enterRule(_localctx, 302, RULE_dropIndex);
14597 		int _la;
14598 		try {
14599 			enterOuterAlt(_localctx, 1);
14600 			{
14601 			setState(2278);
14602 			match(DROP);
14603 			setState(2279);
14604 			match(INDEX);
14605 			setState(2281);
14606 			_errHandler.sync(this);
14607 			_la = _input.LA(1);
14608 			if (_la==IF) {
14609 				{
14610 				setState(2280);
14611 				ifExists();
14612 				}
14613 			}
14614 
14615 			setState(2283);
14616 			indexName();
14617 			setState(2284);
14618 			match(ON);
14619 			setState(2285);
14620 			tableName();
14621 			}
14622 		}
14623 		catch (RecognitionException re) {
14624 			_localctx.exception = re;
14625 			_errHandler.reportError(this, re);
14626 			_errHandler.recover(this, re);
14627 		}
14628 		finally {
14629 			exitRule();
14630 		}
14631 		return _localctx;
14632 	}
14633 
14634 	public static class DropDatabaseContext extends ParserRuleContext {
14635 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14636 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
14637 		public List<DatabaseNameContext> databaseName() {
14638 			return getRuleContexts(DatabaseNameContext.class);
14639 		}
14640 		public DatabaseNameContext databaseName(int i) {
14641 			return getRuleContext(DatabaseNameContext.class,i);
14642 		}
14643 		public IfExistsContext ifExists() {
14644 			return getRuleContext(IfExistsContext.class,0);
14645 		}
14646 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14647 		public TerminalNode COMMA_(int i) {
14648 			return getToken(SQLServerStatementParser.COMMA_, i);
14649 		}
14650 		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
14651 			super(parent, invokingState);
14652 		}
14653 		@Override public int getRuleIndex() { return RULE_dropDatabase; }
14654 		@Override
14655 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14656 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropDatabase(this);
14657 			else return visitor.visitChildren(this);
14658 		}
14659 	}
14660 
14661 	public final DropDatabaseContext dropDatabase() throws RecognitionException {
14662 		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
14663 		enterRule(_localctx, 304, RULE_dropDatabase);
14664 		int _la;
14665 		try {
14666 			enterOuterAlt(_localctx, 1);
14667 			{
14668 			setState(2287);
14669 			match(DROP);
14670 			setState(2288);
14671 			match(DATABASE);
14672 			setState(2290);
14673 			_errHandler.sync(this);
14674 			_la = _input.LA(1);
14675 			if (_la==IF) {
14676 				{
14677 				setState(2289);
14678 				ifExists();
14679 				}
14680 			}
14681 
14682 			setState(2292);
14683 			databaseName();
14684 			setState(2297);
14685 			_errHandler.sync(this);
14686 			_la = _input.LA(1);
14687 			while (_la==COMMA_) {
14688 				{
14689 				{
14690 				setState(2293);
14691 				match(COMMA_);
14692 				setState(2294);
14693 				databaseName();
14694 				}
14695 				}
14696 				setState(2299);
14697 				_errHandler.sync(this);
14698 				_la = _input.LA(1);
14699 			}
14700 			}
14701 		}
14702 		catch (RecognitionException re) {
14703 			_localctx.exception = re;
14704 			_errHandler.reportError(this, re);
14705 			_errHandler.recover(this, re);
14706 		}
14707 		finally {
14708 			exitRule();
14709 		}
14710 		return _localctx;
14711 	}
14712 
14713 	public static class DropFunctionContext extends ParserRuleContext {
14714 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14715 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14716 		public List<FunctionNameContext> functionName() {
14717 			return getRuleContexts(FunctionNameContext.class);
14718 		}
14719 		public FunctionNameContext functionName(int i) {
14720 			return getRuleContext(FunctionNameContext.class,i);
14721 		}
14722 		public IfExistsContext ifExists() {
14723 			return getRuleContext(IfExistsContext.class,0);
14724 		}
14725 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14726 		public TerminalNode COMMA_(int i) {
14727 			return getToken(SQLServerStatementParser.COMMA_, i);
14728 		}
14729 		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
14730 			super(parent, invokingState);
14731 		}
14732 		@Override public int getRuleIndex() { return RULE_dropFunction; }
14733 		@Override
14734 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14735 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropFunction(this);
14736 			else return visitor.visitChildren(this);
14737 		}
14738 	}
14739 
14740 	public final DropFunctionContext dropFunction() throws RecognitionException {
14741 		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
14742 		enterRule(_localctx, 306, RULE_dropFunction);
14743 		int _la;
14744 		try {
14745 			enterOuterAlt(_localctx, 1);
14746 			{
14747 			setState(2300);
14748 			match(DROP);
14749 			setState(2301);
14750 			match(FUNCTION);
14751 			setState(2303);
14752 			_errHandler.sync(this);
14753 			_la = _input.LA(1);
14754 			if (_la==IF) {
14755 				{
14756 				setState(2302);
14757 				ifExists();
14758 				}
14759 			}
14760 
14761 			setState(2305);
14762 			functionName();
14763 			setState(2310);
14764 			_errHandler.sync(this);
14765 			_la = _input.LA(1);
14766 			while (_la==COMMA_) {
14767 				{
14768 				{
14769 				setState(2306);
14770 				match(COMMA_);
14771 				setState(2307);
14772 				functionName();
14773 				}
14774 				}
14775 				setState(2312);
14776 				_errHandler.sync(this);
14777 				_la = _input.LA(1);
14778 			}
14779 			}
14780 		}
14781 		catch (RecognitionException re) {
14782 			_localctx.exception = re;
14783 			_errHandler.reportError(this, re);
14784 			_errHandler.recover(this, re);
14785 		}
14786 		finally {
14787 			exitRule();
14788 		}
14789 		return _localctx;
14790 	}
14791 
14792 	public static class DropProcedureContext extends ParserRuleContext {
14793 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14794 		public List<ProcedureNameContext> procedureName() {
14795 			return getRuleContexts(ProcedureNameContext.class);
14796 		}
14797 		public ProcedureNameContext procedureName(int i) {
14798 			return getRuleContext(ProcedureNameContext.class,i);
14799 		}
14800 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
14801 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
14802 		public IfExistsContext ifExists() {
14803 			return getRuleContext(IfExistsContext.class,0);
14804 		}
14805 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14806 		public TerminalNode COMMA_(int i) {
14807 			return getToken(SQLServerStatementParser.COMMA_, i);
14808 		}
14809 		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
14810 			super(parent, invokingState);
14811 		}
14812 		@Override public int getRuleIndex() { return RULE_dropProcedure; }
14813 		@Override
14814 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14815 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropProcedure(this);
14816 			else return visitor.visitChildren(this);
14817 		}
14818 	}
14819 
14820 	public final DropProcedureContext dropProcedure() throws RecognitionException {
14821 		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
14822 		enterRule(_localctx, 308, RULE_dropProcedure);
14823 		int _la;
14824 		try {
14825 			enterOuterAlt(_localctx, 1);
14826 			{
14827 			setState(2313);
14828 			match(DROP);
14829 			setState(2314);
14830 			_la = _input.LA(1);
14831 			if ( !(_la==PROCEDURE || _la==PROC) ) {
14832 			_errHandler.recoverInline(this);
14833 			}
14834 			else {
14835 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14836 				_errHandler.reportMatch(this);
14837 				consume();
14838 			}
14839 			setState(2316);
14840 			_errHandler.sync(this);
14841 			_la = _input.LA(1);
14842 			if (_la==IF) {
14843 				{
14844 				setState(2315);
14845 				ifExists();
14846 				}
14847 			}
14848 
14849 			setState(2318);
14850 			procedureName();
14851 			setState(2323);
14852 			_errHandler.sync(this);
14853 			_la = _input.LA(1);
14854 			while (_la==COMMA_) {
14855 				{
14856 				{
14857 				setState(2319);
14858 				match(COMMA_);
14859 				setState(2320);
14860 				procedureName();
14861 				}
14862 				}
14863 				setState(2325);
14864 				_errHandler.sync(this);
14865 				_la = _input.LA(1);
14866 			}
14867 			}
14868 		}
14869 		catch (RecognitionException re) {
14870 			_localctx.exception = re;
14871 			_errHandler.reportError(this, re);
14872 			_errHandler.recover(this, re);
14873 		}
14874 		finally {
14875 			exitRule();
14876 		}
14877 		return _localctx;
14878 	}
14879 
14880 	public static class DropViewContext extends ParserRuleContext {
14881 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14882 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
14883 		public List<ViewNameContext> viewName() {
14884 			return getRuleContexts(ViewNameContext.class);
14885 		}
14886 		public ViewNameContext viewName(int i) {
14887 			return getRuleContext(ViewNameContext.class,i);
14888 		}
14889 		public IfExistsContext ifExists() {
14890 			return getRuleContext(IfExistsContext.class,0);
14891 		}
14892 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14893 		public TerminalNode COMMA_(int i) {
14894 			return getToken(SQLServerStatementParser.COMMA_, i);
14895 		}
14896 		public DropViewContext(ParserRuleContext parent, int invokingState) {
14897 			super(parent, invokingState);
14898 		}
14899 		@Override public int getRuleIndex() { return RULE_dropView; }
14900 		@Override
14901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropView(this);
14903 			else return visitor.visitChildren(this);
14904 		}
14905 	}
14906 
14907 	public final DropViewContext dropView() throws RecognitionException {
14908 		DropViewContext _localctx = new DropViewContext(_ctx, getState());
14909 		enterRule(_localctx, 310, RULE_dropView);
14910 		int _la;
14911 		try {
14912 			enterOuterAlt(_localctx, 1);
14913 			{
14914 			setState(2326);
14915 			match(DROP);
14916 			setState(2327);
14917 			match(VIEW);
14918 			setState(2329);
14919 			_errHandler.sync(this);
14920 			_la = _input.LA(1);
14921 			if (_la==IF) {
14922 				{
14923 				setState(2328);
14924 				ifExists();
14925 				}
14926 			}
14927 
14928 			setState(2331);
14929 			viewName();
14930 			setState(2336);
14931 			_errHandler.sync(this);
14932 			_la = _input.LA(1);
14933 			while (_la==COMMA_) {
14934 				{
14935 				{
14936 				setState(2332);
14937 				match(COMMA_);
14938 				setState(2333);
14939 				viewName();
14940 				}
14941 				}
14942 				setState(2338);
14943 				_errHandler.sync(this);
14944 				_la = _input.LA(1);
14945 			}
14946 			}
14947 		}
14948 		catch (RecognitionException re) {
14949 			_localctx.exception = re;
14950 			_errHandler.reportError(this, re);
14951 			_errHandler.recover(this, re);
14952 		}
14953 		finally {
14954 			exitRule();
14955 		}
14956 		return _localctx;
14957 	}
14958 
14959 	public static class DropTriggerContext extends ParserRuleContext {
14960 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14961 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
14962 		public List<TriggerNameContext> triggerName() {
14963 			return getRuleContexts(TriggerNameContext.class);
14964 		}
14965 		public TriggerNameContext triggerName(int i) {
14966 			return getRuleContext(TriggerNameContext.class,i);
14967 		}
14968 		public IfExistsContext ifExists() {
14969 			return getRuleContext(IfExistsContext.class,0);
14970 		}
14971 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14972 		public TerminalNode COMMA_(int i) {
14973 			return getToken(SQLServerStatementParser.COMMA_, i);
14974 		}
14975 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14976 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
14977 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
14978 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
14979 		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
14980 			super(parent, invokingState);
14981 		}
14982 		@Override public int getRuleIndex() { return RULE_dropTrigger; }
14983 		@Override
14984 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14985 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTrigger(this);
14986 			else return visitor.visitChildren(this);
14987 		}
14988 	}
14989 
14990 	public final DropTriggerContext dropTrigger() throws RecognitionException {
14991 		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
14992 		enterRule(_localctx, 312, RULE_dropTrigger);
14993 		int _la;
14994 		try {
14995 			enterOuterAlt(_localctx, 1);
14996 			{
14997 			setState(2339);
14998 			match(DROP);
14999 			setState(2340);
15000 			match(TRIGGER);
15001 			setState(2342);
15002 			_errHandler.sync(this);
15003 			_la = _input.LA(1);
15004 			if (_la==IF) {
15005 				{
15006 				setState(2341);
15007 				ifExists();
15008 				}
15009 			}
15010 
15011 			setState(2344);
15012 			triggerName();
15013 			setState(2349);
15014 			_errHandler.sync(this);
15015 			_la = _input.LA(1);
15016 			while (_la==COMMA_) {
15017 				{
15018 				{
15019 				setState(2345);
15020 				match(COMMA_);
15021 				setState(2346);
15022 				triggerName();
15023 				}
15024 				}
15025 				setState(2351);
15026 				_errHandler.sync(this);
15027 				_la = _input.LA(1);
15028 			}
15029 			setState(2358);
15030 			_errHandler.sync(this);
15031 			_la = _input.LA(1);
15032 			if (_la==ON) {
15033 				{
15034 				setState(2352);
15035 				match(ON);
15036 				setState(2356);
15037 				_errHandler.sync(this);
15038 				switch (_input.LA(1)) {
15039 				case DATABASE:
15040 					{
15041 					setState(2353);
15042 					match(DATABASE);
15043 					}
15044 					break;
15045 				case ALL:
15046 					{
15047 					setState(2354);
15048 					match(ALL);
15049 					setState(2355);
15050 					match(SERVER);
15051 					}
15052 					break;
15053 				default:
15054 					throw new NoViableAltException(this);
15055 				}
15056 				}
15057 			}
15058 
15059 			}
15060 		}
15061 		catch (RecognitionException re) {
15062 			_localctx.exception = re;
15063 			_errHandler.reportError(this, re);
15064 			_errHandler.recover(this, re);
15065 		}
15066 		finally {
15067 			exitRule();
15068 		}
15069 		return _localctx;
15070 	}
15071 
15072 	public static class DropSequenceContext extends ParserRuleContext {
15073 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15074 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
15075 		public List<SequenceNameContext> sequenceName() {
15076 			return getRuleContexts(SequenceNameContext.class);
15077 		}
15078 		public SequenceNameContext sequenceName(int i) {
15079 			return getRuleContext(SequenceNameContext.class,i);
15080 		}
15081 		public IfExistsContext ifExists() {
15082 			return getRuleContext(IfExistsContext.class,0);
15083 		}
15084 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15085 		public TerminalNode COMMA_(int i) {
15086 			return getToken(SQLServerStatementParser.COMMA_, i);
15087 		}
15088 		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
15089 			super(parent, invokingState);
15090 		}
15091 		@Override public int getRuleIndex() { return RULE_dropSequence; }
15092 		@Override
15093 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15094 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSequence(this);
15095 			else return visitor.visitChildren(this);
15096 		}
15097 	}
15098 
15099 	public final DropSequenceContext dropSequence() throws RecognitionException {
15100 		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
15101 		enterRule(_localctx, 314, RULE_dropSequence);
15102 		int _la;
15103 		try {
15104 			enterOuterAlt(_localctx, 1);
15105 			{
15106 			setState(2360);
15107 			match(DROP);
15108 			setState(2361);
15109 			match(SEQUENCE);
15110 			setState(2363);
15111 			_errHandler.sync(this);
15112 			_la = _input.LA(1);
15113 			if (_la==IF) {
15114 				{
15115 				setState(2362);
15116 				ifExists();
15117 				}
15118 			}
15119 
15120 			setState(2365);
15121 			sequenceName();
15122 			setState(2370);
15123 			_errHandler.sync(this);
15124 			_la = _input.LA(1);
15125 			while (_la==COMMA_) {
15126 				{
15127 				{
15128 				setState(2366);
15129 				match(COMMA_);
15130 				setState(2367);
15131 				sequenceName();
15132 				}
15133 				}
15134 				setState(2372);
15135 				_errHandler.sync(this);
15136 				_la = _input.LA(1);
15137 			}
15138 			}
15139 		}
15140 		catch (RecognitionException re) {
15141 			_localctx.exception = re;
15142 			_errHandler.reportError(this, re);
15143 			_errHandler.recover(this, re);
15144 		}
15145 		finally {
15146 			exitRule();
15147 		}
15148 		return _localctx;
15149 	}
15150 
15151 	public static class DropServiceContext extends ParserRuleContext {
15152 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15153 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
15154 		public ServiceNameContext serviceName() {
15155 			return getRuleContext(ServiceNameContext.class,0);
15156 		}
15157 		public DropServiceContext(ParserRuleContext parent, int invokingState) {
15158 			super(parent, invokingState);
15159 		}
15160 		@Override public int getRuleIndex() { return RULE_dropService; }
15161 		@Override
15162 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15163 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropService(this);
15164 			else return visitor.visitChildren(this);
15165 		}
15166 	}
15167 
15168 	public final DropServiceContext dropService() throws RecognitionException {
15169 		DropServiceContext _localctx = new DropServiceContext(_ctx, getState());
15170 		enterRule(_localctx, 316, RULE_dropService);
15171 		try {
15172 			enterOuterAlt(_localctx, 1);
15173 			{
15174 			setState(2373);
15175 			match(DROP);
15176 			setState(2374);
15177 			match(SERVICE);
15178 			setState(2375);
15179 			serviceName();
15180 			}
15181 		}
15182 		catch (RecognitionException re) {
15183 			_localctx.exception = re;
15184 			_errHandler.reportError(this, re);
15185 			_errHandler.recover(this, re);
15186 		}
15187 		finally {
15188 			exitRule();
15189 		}
15190 		return _localctx;
15191 	}
15192 
15193 	public static class DropSchemaContext extends ParserRuleContext {
15194 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15195 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
15196 		public SchemaNameContext schemaName() {
15197 			return getRuleContext(SchemaNameContext.class,0);
15198 		}
15199 		public IfExistsContext ifExists() {
15200 			return getRuleContext(IfExistsContext.class,0);
15201 		}
15202 		public DropSchemaContext(ParserRuleContext parent, int invokingState) {
15203 			super(parent, invokingState);
15204 		}
15205 		@Override public int getRuleIndex() { return RULE_dropSchema; }
15206 		@Override
15207 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15208 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSchema(this);
15209 			else return visitor.visitChildren(this);
15210 		}
15211 	}
15212 
15213 	public final DropSchemaContext dropSchema() throws RecognitionException {
15214 		DropSchemaContext _localctx = new DropSchemaContext(_ctx, getState());
15215 		enterRule(_localctx, 318, RULE_dropSchema);
15216 		int _la;
15217 		try {
15218 			enterOuterAlt(_localctx, 1);
15219 			{
15220 			setState(2377);
15221 			match(DROP);
15222 			setState(2378);
15223 			match(SCHEMA);
15224 			setState(2380);
15225 			_errHandler.sync(this);
15226 			_la = _input.LA(1);
15227 			if (_la==IF) {
15228 				{
15229 				setState(2379);
15230 				ifExists();
15231 				}
15232 			}
15233 
15234 			setState(2382);
15235 			schemaName();
15236 			}
15237 		}
15238 		catch (RecognitionException re) {
15239 			_localctx.exception = re;
15240 			_errHandler.reportError(this, re);
15241 			_errHandler.recover(this, re);
15242 		}
15243 		finally {
15244 			exitRule();
15245 		}
15246 		return _localctx;
15247 	}
15248 
15249 	public static class TruncateTableContext extends ParserRuleContext {
15250 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
15251 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
15252 		public TableNameContext tableName() {
15253 			return getRuleContext(TableNameContext.class,0);
15254 		}
15255 		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
15256 			super(parent, invokingState);
15257 		}
15258 		@Override public int getRuleIndex() { return RULE_truncateTable; }
15259 		@Override
15260 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15261 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTruncateTable(this);
15262 			else return visitor.visitChildren(this);
15263 		}
15264 	}
15265 
15266 	public final TruncateTableContext truncateTable() throws RecognitionException {
15267 		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
15268 		enterRule(_localctx, 320, RULE_truncateTable);
15269 		try {
15270 			enterOuterAlt(_localctx, 1);
15271 			{
15272 			setState(2384);
15273 			match(TRUNCATE);
15274 			setState(2385);
15275 			match(TABLE);
15276 			setState(2386);
15277 			tableName();
15278 			}
15279 		}
15280 		catch (RecognitionException re) {
15281 			_localctx.exception = re;
15282 			_errHandler.reportError(this, re);
15283 			_errHandler.recover(this, re);
15284 		}
15285 		finally {
15286 			exitRule();
15287 		}
15288 		return _localctx;
15289 	}
15290 
15291 	public static class UpdateStatisticsContext extends ParserRuleContext {
15292 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
15293 		public TerminalNode STATISTICS() { return getToken(SQLServerStatementParser.STATISTICS, 0); }
15294 		public TableNameContext tableName() {
15295 			return getRuleContext(TableNameContext.class,0);
15296 		}
15297 		public List<IndexNameContext> indexName() {
15298 			return getRuleContexts(IndexNameContext.class);
15299 		}
15300 		public IndexNameContext indexName(int i) {
15301 			return getRuleContext(IndexNameContext.class,i);
15302 		}
15303 		public StatisticsWithClauseContext statisticsWithClause() {
15304 			return getRuleContext(StatisticsWithClauseContext.class,0);
15305 		}
15306 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15307 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15308 		public TerminalNode COMMA_(int i) {
15309 			return getToken(SQLServerStatementParser.COMMA_, i);
15310 		}
15311 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15312 		public UpdateStatisticsContext(ParserRuleContext parent, int invokingState) {
15313 			super(parent, invokingState);
15314 		}
15315 		@Override public int getRuleIndex() { return RULE_updateStatistics; }
15316 		@Override
15317 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15318 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdateStatistics(this);
15319 			else return visitor.visitChildren(this);
15320 		}
15321 	}
15322 
15323 	public final UpdateStatisticsContext updateStatistics() throws RecognitionException {
15324 		UpdateStatisticsContext _localctx = new UpdateStatisticsContext(_ctx, getState());
15325 		enterRule(_localctx, 322, RULE_updateStatistics);
15326 		int _la;
15327 		try {
15328 			enterOuterAlt(_localctx, 1);
15329 			{
15330 			setState(2388);
15331 			match(UPDATE);
15332 			setState(2389);
15333 			match(STATISTICS);
15334 			setState(2390);
15335 			tableName();
15336 			setState(2405);
15337 			_errHandler.sync(this);
15338 			_la = _input.LA(1);
15339 			if (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (TRUNCATE - 31)) | (1L << (SCHEMA - 31)) | (1L << (COLUMNS - 31)) | (1L << (PRECISION - 31)) | (1L << (FUNCTION - 31)) | (1L << (TRIGGER - 31)) | (1L << (CAST - 31)) | (1L << (TRIM - 31)) | (1L << (SUBSTRING - 31)))) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & ((1L << (OFF - 98)) | (1L << (GROUP - 98)) | (1L << (LIMIT - 98)) | (1L << (OFFSET - 98)) | (1L << (SAVEPOINT - 98)) | (1L << (BOOLEAN - 98)) | (1L << (ARRAY - 98)) | (1L << (DATE - 98)) | (1L << (TIMESTAMP - 98)) | (1L << (LOCALTIME - 98)) | (1L << (LOCALTIMESTAMP - 98)) | (1L << (YEAR - 98)) | (1L << (QUARTER - 98)) | (1L << (MONTH - 98)) | (1L << (WEEK - 98)) | (1L << (DAY - 98)) | (1L << (SECOND - 98)) | (1L << (MICROSECOND - 98)) | (1L << (MAX - 98)) | (1L << (MIN - 98)) | (1L << (SUM - 98)) | (1L << (COUNT - 98)) | (1L << (AVG - 98)) | (1L << (ENABLE - 98)) | (1L << (DISABLE - 98)) | (1L << (INSTANCE - 98)) | (1L << (DO - 98)))) != 0) || ((((_la - 162)) & ~0x3f) == 0 && ((1L << (_la - 162)) & ((1L << (DEFINER - 162)) | (1L << (SQL - 162)) | (1L << (CASCADED - 162)) | (1L << (LOCAL - 162)) | (1L << (NEXT - 162)) | (1L << (NAME - 162)) | (1L << (INTEGER - 162)) | (1L << (TYPE - 162)) | (1L << (TEXT - 162)) | (1L << (VIEWS - 162)) | (1L << (READ_ONLY - 162)) | (1L << (DATABASE - 162)) | (1L << (RETURNS - 162)) | (1L << (DATEPART - 162)) | (1L << (PASSWORD - 162)))) != 0) || ((((_la - 241)) & ~0x3f) == 0 && ((1L << (_la - 241)) & ((1L << (BINARY - 241)) | (1L << (HIDDEN_ - 241)) | (1L << (MOD - 241)) | (1L << (PARTITION - 241)) | (1L << (PARTITIONS - 241)) | (1L << (TOP - 241)) | (1L << (ROW - 241)) | (1L << (ROWS - 241)) | (1L << (XOR - 241)) | (1L << (ALWAYS - 241)) | (1L << (ROLE - 241)) | (1L << (START - 241)) | (1L << (ALGORITHM - 241)) | (1L << (AUTO - 241)) | (1L << (BLOCKERS - 241)) | (1L << (CLUSTERED - 241)) | (1L << (NONCLUSTERED - 241)) | (1L << (COLUMNSTORE - 241)) | (1L << (CONTENT - 241)) | (1L << (YEARS - 241)) | (1L << (MONTHS - 241)) | (1L << (WEEKS - 241)) | (1L << (DAYS - 241)) | (1L << (MINUTES - 241)) | (1L << (DENY - 241)) | (1L << (DETERMINISTIC - 241)) | (1L << (DISTRIBUTION - 241)) | (1L << (DOCUMENT - 241)) | (1L << (DURABILITY - 241)) | (1L << (ENCRYPTED - 241)) | (1L << (FILESTREAM - 241)) | (1L << (FILETABLE - 241)) | (1L << (FILLFACTOR - 241)) | (1L << (FOLLOWING - 241)) | (1L << (HASH - 241)) | (1L << (HEAP - 241)) | (1L << (INBOUND - 241)) | (1L << (OUTBOUND - 241)) | (1L << (UNBOUNDED - 241)) | (1L << (INFINITE - 241)) | (1L << (LOGIN - 241)) | (1L << (MASKED - 241)) | (1L << (MAXDOP - 241)) | (1L << (MOVE - 241)) | (1L << (NOCHECK - 241)) | (1L << (OBJECT - 241)) | (1L << (ONLINE - 241)))) != 0) || ((((_la - 305)) & ~0x3f) == 0 && ((1L << (_la - 305)) & ((1L << (OVER - 305)) | (1L << (PAGE - 305)) | (1L << (PAUSED - 305)) | (1L << (PERIOD - 305)) | (1L << (PERSISTED - 305)) | (1L << (PRECEDING - 305)) | (1L << (RANDOMIZED - 305)) | (1L << (RANGE - 305)) | (1L << (REBUILD - 305)) | (1L << (REPLICATE - 305)) | (1L << (REPLICATION - 305)) | (1L << (RESUMABLE - 305)) | (1L << (ROWGUIDCOL - 305)) | (1L << (SAVE - 305)) | (1L << (SELF - 305)) | (1L << (SPARSE - 305)) | (1L << (SWITCH - 305)) | (1L << (TRAN - 305)) | (1L << (TRANCOUNT - 305)) | (1L << (CONTROL - 305)) | (1L << (CONCAT - 305)) | (1L << (TAKE - 305)) | (1L << (OWNERSHIP - 305)) | (1L << (DEFINITION - 305)) | (1L << (APPLICATION - 305)) | (1L << (ASSEMBLY - 305)) | (1L << (SYMMETRIC - 305)) | (1L << (ASYMMETRIC - 305)) | (1L << (SERVER - 305)) | (1L << (RECEIVE - 305)) | (1L << (CHANGE - 305)) | (1L << (TRACE - 305)) | (1L << (TRACKING - 305)) | (1L << (RESOURCES - 305)) | (1L << (SETTINGS - 305)) | (1L << (STATE - 305)) | (1L << (AVAILABILITY - 305)) | (1L << (CREDENTIAL - 305)) | (1L << (ENDPOINT - 305)) | (1L << (EVENT - 305)) | (1L << (NOTIFICATION - 305)) | (1L << (LINKED - 305)) | (1L << (AUDIT - 305)) | (1L << (DDL - 305)) | (1L << (XML - 305)) | (1L << (IMPERSONATE - 305)) | (1L << (SECURABLES - 305)) | (1L << (AUTHENTICATE - 305)) | (1L << (EXTERNAL - 305)) | (1L << (ACCESS - 305)) | (1L << (ADMINISTER - 305)) | (1L << (BULK - 305)) | (1L << (OPERATIONS - 305)) | (1L << (UNSAFE - 305)) | (1L << (SHUTDOWN - 305)) | (1L << (SCOPED - 305)) | (1L << (CONFIGURATION - 305)))) != 0) || ((((_la - 369)) & ~0x3f) == 0 && ((1L << (_la - 369)) & ((1L << (DATASPACE - 369)) | (1L << (SERVICE - 369)) | (1L << (CERTIFICATE - 369)) | (1L << (CONTRACT - 369)) | (1L << (ENCRYPTION - 369)) | (1L << (MASTER - 369)) | (1L << (DATA - 369)) | (1L << (SOURCE - 369)) | (1L << (FILE - 369)) | (1L << (FORMAT - 369)) | (1L << (LIBRARY - 369)) | (1L << (FULLTEXT - 369)) | (1L << (MASK - 369)) | (1L << (UNMASK - 369)) | (1L << (MESSAGE - 369)) | (1L << (REMOTE - 369)) | (1L << (BINDING - 369)) | (1L << (ROUTE - 369)) | (1L << (SECURITY - 369)) | (1L << (POLICY - 369)) | (1L << (AGGREGATE - 369)) | (1L << (QUEUE - 369)) | (1L << (RULE - 369)) | (1L << (SYNONYM - 369)) | (1L << (COLLECTION - 369)) | (1L << (SCRIPT - 369)) | (1L << (KILL - 369)) | (1L << (BACKUP - 369)) | (1L << (LOG - 369)) | (1L << (SHOWPLAN - 369)) | (1L << (SUBSCRIBE - 369)) | (1L << (QUERY - 369)) | (1L << (NOTIFICATIONS - 369)) | (1L << (CHECKPOINT - 369)) | (1L << (SEQUENCE - 369)) | (1L << (ABORT_AFTER_WAIT - 369)) | (1L << (ALLOW_PAGE_LOCKS - 369)) | (1L << (ALLOW_ROW_LOCKS - 369)) | (1L << (ALL_SPARSE_COLUMNS - 369)) | (1L << (BUCKET_COUNT - 369)) | (1L << (COLUMNSTORE_ARCHIVE - 369)) | (1L << (COLUMN_ENCRYPTION_KEY - 369)) | (1L << (COLUMN_SET - 369)) | (1L << (COMPRESSION_DELAY - 369)) | (1L << (DATABASE_DEAULT - 369)) | (1L << (DATA_COMPRESSION - 369)) | (1L << (DATA_CONSISTENCY_CHECK - 369)) | (1L << (ENCRYPTION_TYPE - 369)) | (1L << (SYSTEM_TIME - 369)) | (1L << (SYSTEM_VERSIONING - 369)) | (1L << (TEXTIMAGE_ON - 369)) | (1L << (WAIT_AT_LOW_PRIORITY - 369)) | (1L << (STATISTICS_INCREMENTAL - 369)) | (1L << (STATISTICS_NORECOMPUTE - 369)) | (1L << (ROUND_ROBIN - 369)) | (1L << (SCHEMA_AND_DATA - 369)) | (1L << (SCHEMA_ONLY - 369)) | (1L << (SORT_IN_TEMPDB - 369)) | (1L << (IGNORE_DUP_KEY - 369)) | (1L << (IMPLICIT_TRANSACTIONS - 369)) | (1L << (MAX_DURATION - 369)) | (1L << (MEMORY_OPTIMIZED - 369)) | (1L << (MIGRATION_STATE - 369)) | (1L << (PAD_INDEX - 369)))) != 0) || ((((_la - 433)) & ~0x3f) == 0 && ((1L << (_la - 433)) & ((1L << (REMOTE_DATA_ARCHIVE - 433)) | (1L << (FILESTREAM_ON - 433)) | (1L << (FILETABLE_COLLATE_FILENAME - 433)) | (1L << (FILETABLE_DIRECTORY - 433)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 433)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 433)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 433)) | (1L << (FILTER_PREDICATE - 433)) | (1L << (HISTORY_RETENTION_PERIOD - 433)) | (1L << (HISTORY_TABLE - 433)) | (1L << (LOCK_ESCALATION - 433)) | (1L << (DROP_EXISTING - 433)) | (1L << (ROW_NUMBER - 433)) | (1L << (FIRST - 433)) | (1L << (DATETIME2 - 433)) | (1L << (OUTPUT - 433)) | (1L << (INSERTED - 433)) | (1L << (DELETED - 433)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
15340 				{
15341 				setState(2392);
15342 				_errHandler.sync(this);
15343 				_la = _input.LA(1);
15344 				if (_la==LP_) {
15345 					{
15346 					setState(2391);
15347 					match(LP_);
15348 					}
15349 				}
15350 
15351 				setState(2394);
15352 				indexName();
15353 				setState(2399);
15354 				_errHandler.sync(this);
15355 				_la = _input.LA(1);
15356 				while (_la==COMMA_) {
15357 					{
15358 					{
15359 					setState(2395);
15360 					match(COMMA_);
15361 					setState(2396);
15362 					indexName();
15363 					}
15364 					}
15365 					setState(2401);
15366 					_errHandler.sync(this);
15367 					_la = _input.LA(1);
15368 				}
15369 				setState(2403);
15370 				_errHandler.sync(this);
15371 				_la = _input.LA(1);
15372 				if (_la==RP_) {
15373 					{
15374 					setState(2402);
15375 					match(RP_);
15376 					}
15377 				}
15378 
15379 				}
15380 			}
15381 
15382 			setState(2408);
15383 			_errHandler.sync(this);
15384 			_la = _input.LA(1);
15385 			if (_la==WITH) {
15386 				{
15387 				setState(2407);
15388 				statisticsWithClause();
15389 				}
15390 			}
15391 
15392 			}
15393 		}
15394 		catch (RecognitionException re) {
15395 			_localctx.exception = re;
15396 			_errHandler.reportError(this, re);
15397 			_errHandler.recover(this, re);
15398 		}
15399 		finally {
15400 			exitRule();
15401 		}
15402 		return _localctx;
15403 	}
15404 
15405 	public static class StatisticsWithClauseContext extends ParserRuleContext {
15406 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
15407 		public SampleOptionContext sampleOption() {
15408 			return getRuleContext(SampleOptionContext.class,0);
15409 		}
15410 		public StatisticsOptionsContext statisticsOptions() {
15411 			return getRuleContext(StatisticsOptionsContext.class,0);
15412 		}
15413 		public StatisticsWithClauseContext(ParserRuleContext parent, int invokingState) {
15414 			super(parent, invokingState);
15415 		}
15416 		@Override public int getRuleIndex() { return RULE_statisticsWithClause; }
15417 		@Override
15418 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15419 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsWithClause(this);
15420 			else return visitor.visitChildren(this);
15421 		}
15422 	}
15423 
15424 	public final StatisticsWithClauseContext statisticsWithClause() throws RecognitionException {
15425 		StatisticsWithClauseContext _localctx = new StatisticsWithClauseContext(_ctx, getState());
15426 		enterRule(_localctx, 324, RULE_statisticsWithClause);
15427 		int _la;
15428 		try {
15429 			enterOuterAlt(_localctx, 1);
15430 			{
15431 			setState(2410);
15432 			match(WITH);
15433 			setState(2412);
15434 			_errHandler.sync(this);
15435 			_la = _input.LA(1);
15436 			if (((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (FULLSCAN - 711)) | (1L << (SAMPLE - 711)) | (1L << (RESAMPLE - 711)))) != 0)) {
15437 				{
15438 				setState(2411);
15439 				sampleOption();
15440 				}
15441 			}
15442 
15443 			setState(2415);
15444 			_errHandler.sync(this);
15445 			_la = _input.LA(1);
15446 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP) {
15447 				{
15448 				setState(2414);
15449 				statisticsOptions();
15450 				}
15451 			}
15452 
15453 			}
15454 		}
15455 		catch (RecognitionException re) {
15456 			_localctx.exception = re;
15457 			_errHandler.reportError(this, re);
15458 			_errHandler.recover(this, re);
15459 		}
15460 		finally {
15461 			exitRule();
15462 		}
15463 		return _localctx;
15464 	}
15465 
15466 	public static class SampleOptionContext extends ParserRuleContext {
15467 		public TerminalNode FULLSCAN() { return getToken(SQLServerStatementParser.FULLSCAN, 0); }
15468 		public TerminalNode PERSIST_SAMPLE_PERCENT() { return getToken(SQLServerStatementParser.PERSIST_SAMPLE_PERCENT, 0); }
15469 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15470 		public TerminalNode SAMPLE() { return getToken(SQLServerStatementParser.SAMPLE, 0); }
15471 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
15472 		public TerminalNode NUMBER_(int i) {
15473 			return getToken(SQLServerStatementParser.NUMBER_, i);
15474 		}
15475 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15476 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
15477 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
15478 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
15479 		public TerminalNode RESAMPLE() { return getToken(SQLServerStatementParser.RESAMPLE, 0); }
15480 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
15481 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15482 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15483 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15484 		public TerminalNode COMMA_(int i) {
15485 			return getToken(SQLServerStatementParser.COMMA_, i);
15486 		}
15487 		public SampleOptionContext(ParserRuleContext parent, int invokingState) {
15488 			super(parent, invokingState);
15489 		}
15490 		@Override public int getRuleIndex() { return RULE_sampleOption; }
15491 		@Override
15492 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15493 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSampleOption(this);
15494 			else return visitor.visitChildren(this);
15495 		}
15496 	}
15497 
15498 	public final SampleOptionContext sampleOption() throws RecognitionException {
15499 		SampleOptionContext _localctx = new SampleOptionContext(_ctx, getState());
15500 		enterRule(_localctx, 326, RULE_sampleOption);
15501 		int _la;
15502 		try {
15503 			setState(2443);
15504 			_errHandler.sync(this);
15505 			switch (_input.LA(1)) {
15506 			case FULLSCAN:
15507 			case SAMPLE:
15508 				enterOuterAlt(_localctx, 1);
15509 				{
15510 				setState(2421);
15511 				_errHandler.sync(this);
15512 				switch (_input.LA(1)) {
15513 				case FULLSCAN:
15514 					{
15515 					setState(2417);
15516 					match(FULLSCAN);
15517 					}
15518 					break;
15519 				case SAMPLE:
15520 					{
15521 					{
15522 					setState(2418);
15523 					match(SAMPLE);
15524 					setState(2419);
15525 					match(NUMBER_);
15526 					setState(2420);
15527 					_la = _input.LA(1);
15528 					if ( !(_la==PERCENT || _la==ROWS) ) {
15529 					_errHandler.recoverInline(this);
15530 					}
15531 					else {
15532 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15533 						_errHandler.reportMatch(this);
15534 						consume();
15535 					}
15536 					}
15537 					}
15538 					break;
15539 				default:
15540 					throw new NoViableAltException(this);
15541 				}
15542 				setState(2426);
15543 				_errHandler.sync(this);
15544 				_la = _input.LA(1);
15545 				if (_la==PERSIST_SAMPLE_PERCENT) {
15546 					{
15547 					setState(2423);
15548 					match(PERSIST_SAMPLE_PERCENT);
15549 					setState(2424);
15550 					match(EQ_);
15551 					setState(2425);
15552 					_la = _input.LA(1);
15553 					if ( !(_la==ON || _la==OFF) ) {
15554 					_errHandler.recoverInline(this);
15555 					}
15556 					else {
15557 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15558 						_errHandler.reportMatch(this);
15559 						consume();
15560 					}
15561 					}
15562 				}
15563 
15564 				}
15565 				break;
15566 			case RESAMPLE:
15567 				enterOuterAlt(_localctx, 2);
15568 				{
15569 				setState(2428);
15570 				match(RESAMPLE);
15571 				setState(2441);
15572 				_errHandler.sync(this);
15573 				_la = _input.LA(1);
15574 				if (_la==ON) {
15575 					{
15576 					setState(2429);
15577 					match(ON);
15578 					setState(2430);
15579 					match(PARTITIONS);
15580 					setState(2431);
15581 					match(LP_);
15582 					setState(2432);
15583 					match(NUMBER_);
15584 					setState(2437);
15585 					_errHandler.sync(this);
15586 					_la = _input.LA(1);
15587 					while (_la==COMMA_) {
15588 						{
15589 						{
15590 						setState(2433);
15591 						match(COMMA_);
15592 						setState(2434);
15593 						match(NUMBER_);
15594 						}
15595 						}
15596 						setState(2439);
15597 						_errHandler.sync(this);
15598 						_la = _input.LA(1);
15599 					}
15600 					setState(2440);
15601 					match(RP_);
15602 					}
15603 				}
15604 
15605 				}
15606 				break;
15607 			default:
15608 				throw new NoViableAltException(this);
15609 			}
15610 		}
15611 		catch (RecognitionException re) {
15612 			_localctx.exception = re;
15613 			_errHandler.reportError(this, re);
15614 			_errHandler.recover(this, re);
15615 		}
15616 		finally {
15617 			exitRule();
15618 		}
15619 		return _localctx;
15620 	}
15621 
15622 	public static class StatisticsOptionsContext extends ParserRuleContext {
15623 		public List<StatisticsOptionContext> statisticsOption() {
15624 			return getRuleContexts(StatisticsOptionContext.class);
15625 		}
15626 		public StatisticsOptionContext statisticsOption(int i) {
15627 			return getRuleContext(StatisticsOptionContext.class,i);
15628 		}
15629 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15630 		public TerminalNode COMMA_(int i) {
15631 			return getToken(SQLServerStatementParser.COMMA_, i);
15632 		}
15633 		public StatisticsOptionsContext(ParserRuleContext parent, int invokingState) {
15634 			super(parent, invokingState);
15635 		}
15636 		@Override public int getRuleIndex() { return RULE_statisticsOptions; }
15637 		@Override
15638 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15639 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOptions(this);
15640 			else return visitor.visitChildren(this);
15641 		}
15642 	}
15643 
15644 	public final StatisticsOptionsContext statisticsOptions() throws RecognitionException {
15645 		StatisticsOptionsContext _localctx = new StatisticsOptionsContext(_ctx, getState());
15646 		enterRule(_localctx, 328, RULE_statisticsOptions);
15647 		int _la;
15648 		try {
15649 			enterOuterAlt(_localctx, 1);
15650 			{
15651 			setState(2449); 
15652 			_errHandler.sync(this);
15653 			_la = _input.LA(1);
15654 			do {
15655 				{
15656 				{
15657 				setState(2446);
15658 				_errHandler.sync(this);
15659 				_la = _input.LA(1);
15660 				if (_la==COMMA_) {
15661 					{
15662 					setState(2445);
15663 					match(COMMA_);
15664 					}
15665 				}
15666 
15667 				setState(2448);
15668 				statisticsOption();
15669 				}
15670 				}
15671 				setState(2451); 
15672 				_errHandler.sync(this);
15673 				_la = _input.LA(1);
15674 			} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP );
15675 			}
15676 		}
15677 		catch (RecognitionException re) {
15678 			_localctx.exception = re;
15679 			_errHandler.reportError(this, re);
15680 			_errHandler.recover(this, re);
15681 		}
15682 		finally {
15683 			exitRule();
15684 		}
15685 		return _localctx;
15686 	}
15687 
15688 	public static class StatisticsOptionContext extends ParserRuleContext {
15689 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
15690 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
15691 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
15692 		public TerminalNode NORECOMPUTE() { return getToken(SQLServerStatementParser.NORECOMPUTE, 0); }
15693 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
15694 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15695 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15696 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
15697 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
15698 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
15699 		public TerminalNode AUTO_DROP() { return getToken(SQLServerStatementParser.AUTO_DROP, 0); }
15700 		public StatisticsOptionContext(ParserRuleContext parent, int invokingState) {
15701 			super(parent, invokingState);
15702 		}
15703 		@Override public int getRuleIndex() { return RULE_statisticsOption; }
15704 		@Override
15705 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15706 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOption(this);
15707 			else return visitor.visitChildren(this);
15708 		}
15709 	}
15710 
15711 	public final StatisticsOptionContext statisticsOption() throws RecognitionException {
15712 		StatisticsOptionContext _localctx = new StatisticsOptionContext(_ctx, getState());
15713 		enterRule(_localctx, 330, RULE_statisticsOption);
15714 		int _la;
15715 		try {
15716 			setState(2466);
15717 			_errHandler.sync(this);
15718 			switch (_input.LA(1)) {
15719 			case ALL:
15720 				enterOuterAlt(_localctx, 1);
15721 				{
15722 				setState(2453);
15723 				match(ALL);
15724 				}
15725 				break;
15726 			case COLUMNS:
15727 				enterOuterAlt(_localctx, 2);
15728 				{
15729 				setState(2454);
15730 				match(COLUMNS);
15731 				}
15732 				break;
15733 			case INDEX:
15734 				enterOuterAlt(_localctx, 3);
15735 				{
15736 				setState(2455);
15737 				match(INDEX);
15738 				}
15739 				break;
15740 			case NORECOMPUTE:
15741 				enterOuterAlt(_localctx, 4);
15742 				{
15743 				setState(2456);
15744 				match(NORECOMPUTE);
15745 				}
15746 				break;
15747 			case INCREMENTAL:
15748 				enterOuterAlt(_localctx, 5);
15749 				{
15750 				setState(2457);
15751 				match(INCREMENTAL);
15752 				setState(2458);
15753 				match(EQ_);
15754 				setState(2459);
15755 				_la = _input.LA(1);
15756 				if ( !(_la==ON || _la==OFF) ) {
15757 				_errHandler.recoverInline(this);
15758 				}
15759 				else {
15760 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15761 					_errHandler.reportMatch(this);
15762 					consume();
15763 				}
15764 				}
15765 				break;
15766 			case MAXDOP:
15767 				enterOuterAlt(_localctx, 6);
15768 				{
15769 				setState(2460);
15770 				match(MAXDOP);
15771 				setState(2461);
15772 				match(EQ_);
15773 				setState(2462);
15774 				match(NUMBER_);
15775 				}
15776 				break;
15777 			case AUTO_DROP:
15778 				enterOuterAlt(_localctx, 7);
15779 				{
15780 				setState(2463);
15781 				match(AUTO_DROP);
15782 				setState(2464);
15783 				match(EQ_);
15784 				setState(2465);
15785 				_la = _input.LA(1);
15786 				if ( !(_la==ON || _la==OFF) ) {
15787 				_errHandler.recoverInline(this);
15788 				}
15789 				else {
15790 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15791 					_errHandler.reportMatch(this);
15792 					consume();
15793 				}
15794 				}
15795 				break;
15796 			default:
15797 				throw new NoViableAltException(this);
15798 			}
15799 		}
15800 		catch (RecognitionException re) {
15801 			_localctx.exception = re;
15802 			_errHandler.reportError(this, re);
15803 			_errHandler.recover(this, re);
15804 		}
15805 		finally {
15806 			exitRule();
15807 		}
15808 		return _localctx;
15809 	}
15810 
15811 	public static class FileTableClauseContext extends ParserRuleContext {
15812 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
15813 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
15814 		public FileTableClauseContext(ParserRuleContext parent, int invokingState) {
15815 			super(parent, invokingState);
15816 		}
15817 		@Override public int getRuleIndex() { return RULE_fileTableClause; }
15818 		@Override
15819 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15820 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileTableClause(this);
15821 			else return visitor.visitChildren(this);
15822 		}
15823 	}
15824 
15825 	public final FileTableClauseContext fileTableClause() throws RecognitionException {
15826 		FileTableClauseContext _localctx = new FileTableClauseContext(_ctx, getState());
15827 		enterRule(_localctx, 332, RULE_fileTableClause);
15828 		int _la;
15829 		try {
15830 			enterOuterAlt(_localctx, 1);
15831 			{
15832 			setState(2470);
15833 			_errHandler.sync(this);
15834 			_la = _input.LA(1);
15835 			if (_la==AS) {
15836 				{
15837 				setState(2468);
15838 				match(AS);
15839 				setState(2469);
15840 				match(FILETABLE);
15841 				}
15842 			}
15843 
15844 			}
15845 		}
15846 		catch (RecognitionException re) {
15847 			_localctx.exception = re;
15848 			_errHandler.reportError(this, re);
15849 			_errHandler.recover(this, re);
15850 		}
15851 		finally {
15852 			exitRule();
15853 		}
15854 		return _localctx;
15855 	}
15856 
15857 	public static class CreateDefinitionClauseContext extends ParserRuleContext {
15858 		public CreateTableDefinitionsContext createTableDefinitions() {
15859 			return getRuleContext(CreateTableDefinitionsContext.class,0);
15860 		}
15861 		public PartitionSchemeContext partitionScheme() {
15862 			return getRuleContext(PartitionSchemeContext.class,0);
15863 		}
15864 		public FileGroupContext fileGroup() {
15865 			return getRuleContext(FileGroupContext.class,0);
15866 		}
15867 		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
15868 			super(parent, invokingState);
15869 		}
15870 		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
15871 		@Override
15872 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15873 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDefinitionClause(this);
15874 			else return visitor.visitChildren(this);
15875 		}
15876 	}
15877 
15878 	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
15879 		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
15880 		enterRule(_localctx, 334, RULE_createDefinitionClause);
15881 		try {
15882 			enterOuterAlt(_localctx, 1);
15883 			{
15884 			setState(2472);
15885 			createTableDefinitions();
15886 			setState(2473);
15887 			partitionScheme();
15888 			setState(2474);
15889 			fileGroup();
15890 			}
15891 		}
15892 		catch (RecognitionException re) {
15893 			_localctx.exception = re;
15894 			_errHandler.reportError(this, re);
15895 			_errHandler.recover(this, re);
15896 		}
15897 		finally {
15898 			exitRule();
15899 		}
15900 		return _localctx;
15901 	}
15902 
15903 	public static class CreateTableDefinitionsContext extends ParserRuleContext {
15904 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15905 		public List<CreateTableDefinitionContext> createTableDefinition() {
15906 			return getRuleContexts(CreateTableDefinitionContext.class);
15907 		}
15908 		public CreateTableDefinitionContext createTableDefinition(int i) {
15909 			return getRuleContext(CreateTableDefinitionContext.class,i);
15910 		}
15911 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15912 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15913 		public TerminalNode COMMA_(int i) {
15914 			return getToken(SQLServerStatementParser.COMMA_, i);
15915 		}
15916 		public PeriodClauseContext periodClause() {
15917 			return getRuleContext(PeriodClauseContext.class,0);
15918 		}
15919 		public CreateTableDefinitionsContext(ParserRuleContext parent, int invokingState) {
15920 			super(parent, invokingState);
15921 		}
15922 		@Override public int getRuleIndex() { return RULE_createTableDefinitions; }
15923 		@Override
15924 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15925 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinitions(this);
15926 			else return visitor.visitChildren(this);
15927 		}
15928 	}
15929 
15930 	public final CreateTableDefinitionsContext createTableDefinitions() throws RecognitionException {
15931 		CreateTableDefinitionsContext _localctx = new CreateTableDefinitionsContext(_ctx, getState());
15932 		enterRule(_localctx, 336, RULE_createTableDefinitions);
15933 		int _la;
15934 		try {
15935 			int _alt;
15936 			enterOuterAlt(_localctx, 1);
15937 			{
15938 			setState(2476);
15939 			match(LP_);
15940 			setState(2477);
15941 			createTableDefinition();
15942 			setState(2482);
15943 			_errHandler.sync(this);
15944 			_alt = getInterpreter().adaptivePredict(_input,181,_ctx);
15945 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
15946 				if ( _alt==1 ) {
15947 					{
15948 					{
15949 					setState(2478);
15950 					match(COMMA_);
15951 					setState(2479);
15952 					createTableDefinition();
15953 					}
15954 					} 
15955 				}
15956 				setState(2484);
15957 				_errHandler.sync(this);
15958 				_alt = getInterpreter().adaptivePredict(_input,181,_ctx);
15959 			}
15960 			setState(2487);
15961 			_errHandler.sync(this);
15962 			_la = _input.LA(1);
15963 			if (_la==COMMA_) {
15964 				{
15965 				setState(2485);
15966 				match(COMMA_);
15967 				setState(2486);
15968 				periodClause();
15969 				}
15970 			}
15971 
15972 			setState(2489);
15973 			match(RP_);
15974 			}
15975 		}
15976 		catch (RecognitionException re) {
15977 			_localctx.exception = re;
15978 			_errHandler.reportError(this, re);
15979 			_errHandler.recover(this, re);
15980 		}
15981 		finally {
15982 			exitRule();
15983 		}
15984 		return _localctx;
15985 	}
15986 
15987 	public static class CreateTableDefinitionContext extends ParserRuleContext {
15988 		public ColumnDefinitionContext columnDefinition() {
15989 			return getRuleContext(ColumnDefinitionContext.class,0);
15990 		}
15991 		public ComputedColumnDefinitionContext computedColumnDefinition() {
15992 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
15993 		}
15994 		public ColumnSetDefinitionContext columnSetDefinition() {
15995 			return getRuleContext(ColumnSetDefinitionContext.class,0);
15996 		}
15997 		public TableConstraintContext tableConstraint() {
15998 			return getRuleContext(TableConstraintContext.class,0);
15999 		}
16000 		public TableIndexContext tableIndex() {
16001 			return getRuleContext(TableIndexContext.class,0);
16002 		}
16003 		public CreateTableDefinitionContext(ParserRuleContext parent, int invokingState) {
16004 			super(parent, invokingState);
16005 		}
16006 		@Override public int getRuleIndex() { return RULE_createTableDefinition; }
16007 		@Override
16008 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16009 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinition(this);
16010 			else return visitor.visitChildren(this);
16011 		}
16012 	}
16013 
16014 	public final CreateTableDefinitionContext createTableDefinition() throws RecognitionException {
16015 		CreateTableDefinitionContext _localctx = new CreateTableDefinitionContext(_ctx, getState());
16016 		enterRule(_localctx, 338, RULE_createTableDefinition);
16017 		try {
16018 			setState(2496);
16019 			_errHandler.sync(this);
16020 			switch ( getInterpreter().adaptivePredict(_input,183,_ctx) ) {
16021 			case 1:
16022 				enterOuterAlt(_localctx, 1);
16023 				{
16024 				setState(2491);
16025 				columnDefinition();
16026 				}
16027 				break;
16028 			case 2:
16029 				enterOuterAlt(_localctx, 2);
16030 				{
16031 				setState(2492);
16032 				computedColumnDefinition();
16033 				}
16034 				break;
16035 			case 3:
16036 				enterOuterAlt(_localctx, 3);
16037 				{
16038 				setState(2493);
16039 				columnSetDefinition();
16040 				}
16041 				break;
16042 			case 4:
16043 				enterOuterAlt(_localctx, 4);
16044 				{
16045 				setState(2494);
16046 				tableConstraint();
16047 				}
16048 				break;
16049 			case 5:
16050 				enterOuterAlt(_localctx, 5);
16051 				{
16052 				setState(2495);
16053 				tableIndex();
16054 				}
16055 				break;
16056 			}
16057 		}
16058 		catch (RecognitionException re) {
16059 			_localctx.exception = re;
16060 			_errHandler.reportError(this, re);
16061 			_errHandler.recover(this, re);
16062 		}
16063 		finally {
16064 			exitRule();
16065 		}
16066 		return _localctx;
16067 	}
16068 
16069 	public static class ColumnDefinitionContext extends ParserRuleContext {
16070 		public ColumnNameContext columnName() {
16071 			return getRuleContext(ColumnNameContext.class,0);
16072 		}
16073 		public DataTypeContext dataType() {
16074 			return getRuleContext(DataTypeContext.class,0);
16075 		}
16076 		public ColumnConstraintsContext columnConstraints() {
16077 			return getRuleContext(ColumnConstraintsContext.class,0);
16078 		}
16079 		public List<ColumnDefinitionOptionContext> columnDefinitionOption() {
16080 			return getRuleContexts(ColumnDefinitionOptionContext.class);
16081 		}
16082 		public ColumnDefinitionOptionContext columnDefinitionOption(int i) {
16083 			return getRuleContext(ColumnDefinitionOptionContext.class,i);
16084 		}
16085 		public ColumnIndexContext columnIndex() {
16086 			return getRuleContext(ColumnIndexContext.class,0);
16087 		}
16088 		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
16089 			super(parent, invokingState);
16090 		}
16091 		@Override public int getRuleIndex() { return RULE_columnDefinition; }
16092 		@Override
16093 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16094 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinition(this);
16095 			else return visitor.visitChildren(this);
16096 		}
16097 	}
16098 
16099 	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
16100 		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
16101 		enterRule(_localctx, 340, RULE_columnDefinition);
16102 		int _la;
16103 		try {
16104 			int _alt;
16105 			enterOuterAlt(_localctx, 1);
16106 			{
16107 			setState(2498);
16108 			columnName();
16109 			setState(2499);
16110 			dataType();
16111 			setState(2503);
16112 			_errHandler.sync(this);
16113 			_alt = getInterpreter().adaptivePredict(_input,184,_ctx);
16114 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16115 				if ( _alt==1 ) {
16116 					{
16117 					{
16118 					setState(2500);
16119 					columnDefinitionOption();
16120 					}
16121 					} 
16122 				}
16123 				setState(2505);
16124 				_errHandler.sync(this);
16125 				_alt = getInterpreter().adaptivePredict(_input,184,_ctx);
16126 			}
16127 			setState(2506);
16128 			columnConstraints();
16129 			setState(2508);
16130 			_errHandler.sync(this);
16131 			_la = _input.LA(1);
16132 			if (_la==INDEX) {
16133 				{
16134 				setState(2507);
16135 				columnIndex();
16136 				}
16137 			}
16138 
16139 			}
16140 		}
16141 		catch (RecognitionException re) {
16142 			_localctx.exception = re;
16143 			_errHandler.reportError(this, re);
16144 			_errHandler.recover(this, re);
16145 		}
16146 		finally {
16147 			exitRule();
16148 		}
16149 		return _localctx;
16150 	}
16151 
16152 	public static class ColumnDefinitionOptionContext extends ParserRuleContext {
16153 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
16154 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
16155 		public CollationNameContext collationName() {
16156 			return getRuleContext(CollationNameContext.class,0);
16157 		}
16158 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
16159 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
16160 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16161 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16162 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
16163 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
16164 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16165 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16166 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
16167 		public ExprContext expr() {
16168 			return getRuleContext(ExprContext.class,0);
16169 		}
16170 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16171 		public IgnoredIdentifierContext ignoredIdentifier() {
16172 			return getRuleContext(IgnoredIdentifierContext.class,0);
16173 		}
16174 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
16175 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
16176 		public TerminalNode NUMBER_(int i) {
16177 			return getToken(SQLServerStatementParser.NUMBER_, i);
16178 		}
16179 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16180 		public TerminalNode COMMA_(int i) {
16181 			return getToken(SQLServerStatementParser.COMMA_, i);
16182 		}
16183 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16184 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16185 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16186 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
16187 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
16188 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
16189 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
16190 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
16191 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
16192 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
16193 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
16194 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
16195 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
16196 		public EncryptedOptionsContext encryptedOptions() {
16197 			return getRuleContext(EncryptedOptionsContext.class,0);
16198 		}
16199 		public List<ColumnConstraintContext> columnConstraint() {
16200 			return getRuleContexts(ColumnConstraintContext.class);
16201 		}
16202 		public ColumnConstraintContext columnConstraint(int i) {
16203 			return getRuleContext(ColumnConstraintContext.class,i);
16204 		}
16205 		public ColumnIndexContext columnIndex() {
16206 			return getRuleContext(ColumnIndexContext.class,0);
16207 		}
16208 		public ColumnDefinitionOptionContext(ParserRuleContext parent, int invokingState) {
16209 			super(parent, invokingState);
16210 		}
16211 		@Override public int getRuleIndex() { return RULE_columnDefinitionOption; }
16212 		@Override
16213 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16214 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinitionOption(this);
16215 			else return visitor.visitChildren(this);
16216 		}
16217 	}
16218 
16219 	public final ColumnDefinitionOptionContext columnDefinitionOption() throws RecognitionException {
16220 		ColumnDefinitionOptionContext _localctx = new ColumnDefinitionOptionContext(_ctx, getState());
16221 		enterRule(_localctx, 342, RULE_columnDefinitionOption);
16222 		int _la;
16223 		try {
16224 			int _alt;
16225 			setState(2563);
16226 			_errHandler.sync(this);
16227 			switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
16228 			case 1:
16229 				enterOuterAlt(_localctx, 1);
16230 				{
16231 				setState(2510);
16232 				match(FILESTREAM);
16233 				}
16234 				break;
16235 			case 2:
16236 				enterOuterAlt(_localctx, 2);
16237 				{
16238 				setState(2511);
16239 				match(COLLATE);
16240 				setState(2512);
16241 				collationName();
16242 				}
16243 				break;
16244 			case 3:
16245 				enterOuterAlt(_localctx, 3);
16246 				{
16247 				setState(2513);
16248 				match(SPARSE);
16249 				}
16250 				break;
16251 			case 4:
16252 				enterOuterAlt(_localctx, 4);
16253 				{
16254 				setState(2514);
16255 				match(MASKED);
16256 				setState(2515);
16257 				match(WITH);
16258 				setState(2516);
16259 				match(LP_);
16260 				setState(2517);
16261 				match(FUNCTION);
16262 				setState(2518);
16263 				match(EQ_);
16264 				setState(2519);
16265 				match(STRING_);
16266 				setState(2520);
16267 				match(RP_);
16268 				}
16269 				break;
16270 			case 5:
16271 				enterOuterAlt(_localctx, 5);
16272 				{
16273 				setState(2523);
16274 				_errHandler.sync(this);
16275 				_la = _input.LA(1);
16276 				if (_la==CONSTRAINT) {
16277 					{
16278 					setState(2521);
16279 					match(CONSTRAINT);
16280 					setState(2522);
16281 					ignoredIdentifier();
16282 					}
16283 				}
16284 
16285 				setState(2525);
16286 				match(DEFAULT);
16287 				setState(2526);
16288 				expr(0);
16289 				}
16290 				break;
16291 			case 6:
16292 				enterOuterAlt(_localctx, 6);
16293 				{
16294 				setState(2527);
16295 				match(IDENTITY);
16296 				setState(2533);
16297 				_errHandler.sync(this);
16298 				_la = _input.LA(1);
16299 				if (_la==LP_) {
16300 					{
16301 					setState(2528);
16302 					match(LP_);
16303 					setState(2529);
16304 					match(NUMBER_);
16305 					setState(2530);
16306 					match(COMMA_);
16307 					setState(2531);
16308 					match(NUMBER_);
16309 					setState(2532);
16310 					match(RP_);
16311 					}
16312 				}
16313 
16314 				}
16315 				break;
16316 			case 7:
16317 				enterOuterAlt(_localctx, 7);
16318 				{
16319 				setState(2535);
16320 				match(NOT);
16321 				setState(2536);
16322 				match(FOR);
16323 				setState(2537);
16324 				match(REPLICATION);
16325 				}
16326 				break;
16327 			case 8:
16328 				enterOuterAlt(_localctx, 8);
16329 				{
16330 				setState(2538);
16331 				match(GENERATED);
16332 				setState(2539);
16333 				match(ALWAYS);
16334 				setState(2540);
16335 				match(AS);
16336 				setState(2541);
16337 				match(ROW);
16338 				setState(2542);
16339 				_la = _input.LA(1);
16340 				if ( !(_la==START || _la==END) ) {
16341 				_errHandler.recoverInline(this);
16342 				}
16343 				else {
16344 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16345 					_errHandler.reportMatch(this);
16346 					consume();
16347 				}
16348 				setState(2544);
16349 				_errHandler.sync(this);
16350 				_la = _input.LA(1);
16351 				if (_la==HIDDEN_) {
16352 					{
16353 					setState(2543);
16354 					match(HIDDEN_);
16355 					}
16356 				}
16357 
16358 				}
16359 				break;
16360 			case 9:
16361 				enterOuterAlt(_localctx, 9);
16362 				{
16363 				setState(2547);
16364 				_errHandler.sync(this);
16365 				_la = _input.LA(1);
16366 				if (_la==NOT) {
16367 					{
16368 					setState(2546);
16369 					match(NOT);
16370 					}
16371 				}
16372 
16373 				setState(2549);
16374 				match(NULL);
16375 				}
16376 				break;
16377 			case 10:
16378 				enterOuterAlt(_localctx, 10);
16379 				{
16380 				setState(2550);
16381 				match(ROWGUIDCOL);
16382 				}
16383 				break;
16384 			case 11:
16385 				enterOuterAlt(_localctx, 11);
16386 				{
16387 				setState(2551);
16388 				match(ENCRYPTED);
16389 				setState(2552);
16390 				match(WITH);
16391 				setState(2553);
16392 				encryptedOptions();
16393 				}
16394 				break;
16395 			case 12:
16396 				enterOuterAlt(_localctx, 12);
16397 				{
16398 				setState(2554);
16399 				columnConstraint();
16400 				setState(2559);
16401 				_errHandler.sync(this);
16402 				_alt = getInterpreter().adaptivePredict(_input,190,_ctx);
16403 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16404 					if ( _alt==1 ) {
16405 						{
16406 						{
16407 						setState(2555);
16408 						match(COMMA_);
16409 						setState(2556);
16410 						columnConstraint();
16411 						}
16412 						} 
16413 					}
16414 					setState(2561);
16415 					_errHandler.sync(this);
16416 					_alt = getInterpreter().adaptivePredict(_input,190,_ctx);
16417 				}
16418 				}
16419 				break;
16420 			case 13:
16421 				enterOuterAlt(_localctx, 13);
16422 				{
16423 				setState(2562);
16424 				columnIndex();
16425 				}
16426 				break;
16427 			}
16428 		}
16429 		catch (RecognitionException re) {
16430 			_localctx.exception = re;
16431 			_errHandler.reportError(this, re);
16432 			_errHandler.recover(this, re);
16433 		}
16434 		finally {
16435 			exitRule();
16436 		}
16437 		return _localctx;
16438 	}
16439 
16440 	public static class EncryptedOptionsContext extends ParserRuleContext {
16441 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16442 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
16443 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
16444 		public TerminalNode EQ_(int i) {
16445 			return getToken(SQLServerStatementParser.EQ_, i);
16446 		}
16447 		public IgnoredIdentifierContext ignoredIdentifier() {
16448 			return getRuleContext(IgnoredIdentifierContext.class,0);
16449 		}
16450 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16451 		public TerminalNode COMMA_(int i) {
16452 			return getToken(SQLServerStatementParser.COMMA_, i);
16453 		}
16454 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
16455 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
16456 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16457 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16458 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
16459 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
16460 		public EncryptedOptionsContext(ParserRuleContext parent, int invokingState) {
16461 			super(parent, invokingState);
16462 		}
16463 		@Override public int getRuleIndex() { return RULE_encryptedOptions; }
16464 		@Override
16465 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16466 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEncryptedOptions(this);
16467 			else return visitor.visitChildren(this);
16468 		}
16469 	}
16470 
16471 	public final EncryptedOptionsContext encryptedOptions() throws RecognitionException {
16472 		EncryptedOptionsContext _localctx = new EncryptedOptionsContext(_ctx, getState());
16473 		enterRule(_localctx, 344, RULE_encryptedOptions);
16474 		int _la;
16475 		try {
16476 			enterOuterAlt(_localctx, 1);
16477 			{
16478 			setState(2565);
16479 			match(LP_);
16480 			setState(2566);
16481 			match(COLUMN_ENCRYPTION_KEY);
16482 			setState(2567);
16483 			match(EQ_);
16484 			setState(2568);
16485 			ignoredIdentifier();
16486 			setState(2569);
16487 			match(COMMA_);
16488 			setState(2570);
16489 			match(ENCRYPTION_TYPE);
16490 			setState(2571);
16491 			match(EQ_);
16492 			setState(2572);
16493 			_la = _input.LA(1);
16494 			if ( !(_la==DETERMINISTIC || _la==RANDOMIZED) ) {
16495 			_errHandler.recoverInline(this);
16496 			}
16497 			else {
16498 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16499 				_errHandler.reportMatch(this);
16500 				consume();
16501 			}
16502 			setState(2573);
16503 			match(COMMA_);
16504 			setState(2574);
16505 			match(ALGORITHM);
16506 			setState(2575);
16507 			match(EQ_);
16508 			setState(2576);
16509 			match(STRING_);
16510 			setState(2577);
16511 			match(RP_);
16512 			}
16513 		}
16514 		catch (RecognitionException re) {
16515 			_localctx.exception = re;
16516 			_errHandler.reportError(this, re);
16517 			_errHandler.recover(this, re);
16518 		}
16519 		finally {
16520 			exitRule();
16521 		}
16522 		return _localctx;
16523 	}
16524 
16525 	public static class ColumnConstraintContext extends ParserRuleContext {
16526 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
16527 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
16528 		}
16529 		public ColumnForeignKeyConstraintContext columnForeignKeyConstraint() {
16530 			return getRuleContext(ColumnForeignKeyConstraintContext.class,0);
16531 		}
16532 		public CheckConstraintContext checkConstraint() {
16533 			return getRuleContext(CheckConstraintContext.class,0);
16534 		}
16535 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16536 		public ConstraintNameContext constraintName() {
16537 			return getRuleContext(ConstraintNameContext.class,0);
16538 		}
16539 		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
16540 			super(parent, invokingState);
16541 		}
16542 		@Override public int getRuleIndex() { return RULE_columnConstraint; }
16543 		@Override
16544 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16545 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraint(this);
16546 			else return visitor.visitChildren(this);
16547 		}
16548 	}
16549 
16550 	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
16551 		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
16552 		enterRule(_localctx, 346, RULE_columnConstraint);
16553 		int _la;
16554 		try {
16555 			enterOuterAlt(_localctx, 1);
16556 			{
16557 			setState(2581);
16558 			_errHandler.sync(this);
16559 			_la = _input.LA(1);
16560 			if (_la==CONSTRAINT) {
16561 				{
16562 				setState(2579);
16563 				match(CONSTRAINT);
16564 				setState(2580);
16565 				constraintName();
16566 				}
16567 			}
16568 
16569 			setState(2586);
16570 			_errHandler.sync(this);
16571 			switch (_input.LA(1)) {
16572 			case PRIMARY:
16573 			case UNIQUE:
16574 			case KEY:
16575 				{
16576 				setState(2583);
16577 				primaryKeyConstraint();
16578 				}
16579 				break;
16580 			case FOREIGN:
16581 			case REFERENCES:
16582 				{
16583 				setState(2584);
16584 				columnForeignKeyConstraint();
16585 				}
16586 				break;
16587 			case CHECK:
16588 				{
16589 				setState(2585);
16590 				checkConstraint();
16591 				}
16592 				break;
16593 			default:
16594 				throw new NoViableAltException(this);
16595 			}
16596 			}
16597 		}
16598 		catch (RecognitionException re) {
16599 			_localctx.exception = re;
16600 			_errHandler.reportError(this, re);
16601 			_errHandler.recover(this, re);
16602 		}
16603 		finally {
16604 			exitRule();
16605 		}
16606 		return _localctx;
16607 	}
16608 
16609 	public static class ComputedColumnConstraintContext extends ParserRuleContext {
16610 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
16611 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
16612 		}
16613 		public ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() {
16614 			return getRuleContext(ComputedColumnForeignKeyConstraintContext.class,0);
16615 		}
16616 		public CheckConstraintContext checkConstraint() {
16617 			return getRuleContext(CheckConstraintContext.class,0);
16618 		}
16619 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16620 		public ConstraintNameContext constraintName() {
16621 			return getRuleContext(ConstraintNameContext.class,0);
16622 		}
16623 		public ComputedColumnConstraintContext(ParserRuleContext parent, int invokingState) {
16624 			super(parent, invokingState);
16625 		}
16626 		@Override public int getRuleIndex() { return RULE_computedColumnConstraint; }
16627 		@Override
16628 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16629 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnConstraint(this);
16630 			else return visitor.visitChildren(this);
16631 		}
16632 	}
16633 
16634 	public final ComputedColumnConstraintContext computedColumnConstraint() throws RecognitionException {
16635 		ComputedColumnConstraintContext _localctx = new ComputedColumnConstraintContext(_ctx, getState());
16636 		enterRule(_localctx, 348, RULE_computedColumnConstraint);
16637 		int _la;
16638 		try {
16639 			enterOuterAlt(_localctx, 1);
16640 			{
16641 			setState(2590);
16642 			_errHandler.sync(this);
16643 			_la = _input.LA(1);
16644 			if (_la==CONSTRAINT) {
16645 				{
16646 				setState(2588);
16647 				match(CONSTRAINT);
16648 				setState(2589);
16649 				constraintName();
16650 				}
16651 			}
16652 
16653 			setState(2595);
16654 			_errHandler.sync(this);
16655 			switch (_input.LA(1)) {
16656 			case PRIMARY:
16657 			case UNIQUE:
16658 			case KEY:
16659 				{
16660 				setState(2592);
16661 				primaryKeyConstraint();
16662 				}
16663 				break;
16664 			case DOT_:
16665 			case TRUNCATE:
16666 			case SCHEMA:
16667 			case COLUMNS:
16668 			case FOREIGN:
16669 			case PRECISION:
16670 			case FUNCTION:
16671 			case TRIGGER:
16672 			case CAST:
16673 			case TRIM:
16674 			case SUBSTRING:
16675 			case OFF:
16676 			case GROUP:
16677 			case LIMIT:
16678 			case OFFSET:
16679 			case SAVEPOINT:
16680 			case BOOLEAN:
16681 			case ARRAY:
16682 			case DATE:
16683 			case TIMESTAMP:
16684 			case LOCALTIME:
16685 			case LOCALTIMESTAMP:
16686 			case YEAR:
16687 			case QUARTER:
16688 			case MONTH:
16689 			case WEEK:
16690 			case DAY:
16691 			case SECOND:
16692 			case MICROSECOND:
16693 			case MAX:
16694 			case MIN:
16695 			case SUM:
16696 			case COUNT:
16697 			case AVG:
16698 			case ENABLE:
16699 			case DISABLE:
16700 			case INSTANCE:
16701 			case DO:
16702 			case DEFINER:
16703 			case SQL:
16704 			case CASCADED:
16705 			case LOCAL:
16706 			case NEXT:
16707 			case NAME:
16708 			case INTEGER:
16709 			case TYPE:
16710 			case TEXT:
16711 			case VIEWS:
16712 			case READ_ONLY:
16713 			case DATABASE:
16714 			case RETURNS:
16715 			case DATEPART:
16716 			case PASSWORD:
16717 			case BINARY:
16718 			case HIDDEN_:
16719 			case MOD:
16720 			case PARTITION:
16721 			case PARTITIONS:
16722 			case TOP:
16723 			case ROW:
16724 			case ROWS:
16725 			case XOR:
16726 			case ALWAYS:
16727 			case ROLE:
16728 			case START:
16729 			case ALGORITHM:
16730 			case AUTO:
16731 			case BLOCKERS:
16732 			case CLUSTERED:
16733 			case NONCLUSTERED:
16734 			case COLUMNSTORE:
16735 			case CONTENT:
16736 			case YEARS:
16737 			case MONTHS:
16738 			case WEEKS:
16739 			case DAYS:
16740 			case MINUTES:
16741 			case DENY:
16742 			case DETERMINISTIC:
16743 			case DISTRIBUTION:
16744 			case DOCUMENT:
16745 			case DURABILITY:
16746 			case ENCRYPTED:
16747 			case FILESTREAM:
16748 			case FILETABLE:
16749 			case FILLFACTOR:
16750 			case FOLLOWING:
16751 			case HASH:
16752 			case HEAP:
16753 			case INBOUND:
16754 			case OUTBOUND:
16755 			case UNBOUNDED:
16756 			case INFINITE:
16757 			case LOGIN:
16758 			case MASKED:
16759 			case MAXDOP:
16760 			case MOVE:
16761 			case NOCHECK:
16762 			case OBJECT:
16763 			case ONLINE:
16764 			case OVER:
16765 			case PAGE:
16766 			case PAUSED:
16767 			case PERIOD:
16768 			case PERSISTED:
16769 			case PRECEDING:
16770 			case RANDOMIZED:
16771 			case RANGE:
16772 			case REBUILD:
16773 			case REPLICATE:
16774 			case REPLICATION:
16775 			case RESUMABLE:
16776 			case ROWGUIDCOL:
16777 			case SAVE:
16778 			case SELF:
16779 			case SPARSE:
16780 			case SWITCH:
16781 			case TRAN:
16782 			case TRANCOUNT:
16783 			case CONTROL:
16784 			case CONCAT:
16785 			case TAKE:
16786 			case OWNERSHIP:
16787 			case DEFINITION:
16788 			case APPLICATION:
16789 			case ASSEMBLY:
16790 			case SYMMETRIC:
16791 			case ASYMMETRIC:
16792 			case SERVER:
16793 			case RECEIVE:
16794 			case CHANGE:
16795 			case TRACE:
16796 			case TRACKING:
16797 			case RESOURCES:
16798 			case SETTINGS:
16799 			case STATE:
16800 			case AVAILABILITY:
16801 			case CREDENTIAL:
16802 			case ENDPOINT:
16803 			case EVENT:
16804 			case NOTIFICATION:
16805 			case LINKED:
16806 			case AUDIT:
16807 			case DDL:
16808 			case XML:
16809 			case IMPERSONATE:
16810 			case SECURABLES:
16811 			case AUTHENTICATE:
16812 			case EXTERNAL:
16813 			case ACCESS:
16814 			case ADMINISTER:
16815 			case BULK:
16816 			case OPERATIONS:
16817 			case UNSAFE:
16818 			case SHUTDOWN:
16819 			case SCOPED:
16820 			case CONFIGURATION:
16821 			case DATASPACE:
16822 			case SERVICE:
16823 			case CERTIFICATE:
16824 			case CONTRACT:
16825 			case ENCRYPTION:
16826 			case MASTER:
16827 			case DATA:
16828 			case SOURCE:
16829 			case FILE:
16830 			case FORMAT:
16831 			case LIBRARY:
16832 			case FULLTEXT:
16833 			case MASK:
16834 			case UNMASK:
16835 			case MESSAGE:
16836 			case REMOTE:
16837 			case BINDING:
16838 			case ROUTE:
16839 			case SECURITY:
16840 			case POLICY:
16841 			case AGGREGATE:
16842 			case QUEUE:
16843 			case RULE:
16844 			case SYNONYM:
16845 			case COLLECTION:
16846 			case SCRIPT:
16847 			case KILL:
16848 			case BACKUP:
16849 			case LOG:
16850 			case SHOWPLAN:
16851 			case SUBSCRIBE:
16852 			case QUERY:
16853 			case NOTIFICATIONS:
16854 			case CHECKPOINT:
16855 			case SEQUENCE:
16856 			case ABORT_AFTER_WAIT:
16857 			case ALLOW_PAGE_LOCKS:
16858 			case ALLOW_ROW_LOCKS:
16859 			case ALL_SPARSE_COLUMNS:
16860 			case BUCKET_COUNT:
16861 			case COLUMNSTORE_ARCHIVE:
16862 			case COLUMN_ENCRYPTION_KEY:
16863 			case COLUMN_SET:
16864 			case COMPRESSION_DELAY:
16865 			case DATABASE_DEAULT:
16866 			case DATA_COMPRESSION:
16867 			case DATA_CONSISTENCY_CHECK:
16868 			case ENCRYPTION_TYPE:
16869 			case SYSTEM_TIME:
16870 			case SYSTEM_VERSIONING:
16871 			case TEXTIMAGE_ON:
16872 			case WAIT_AT_LOW_PRIORITY:
16873 			case STATISTICS_INCREMENTAL:
16874 			case STATISTICS_NORECOMPUTE:
16875 			case ROUND_ROBIN:
16876 			case SCHEMA_AND_DATA:
16877 			case SCHEMA_ONLY:
16878 			case SORT_IN_TEMPDB:
16879 			case IGNORE_DUP_KEY:
16880 			case IMPLICIT_TRANSACTIONS:
16881 			case MAX_DURATION:
16882 			case MEMORY_OPTIMIZED:
16883 			case MIGRATION_STATE:
16884 			case PAD_INDEX:
16885 			case REMOTE_DATA_ARCHIVE:
16886 			case FILESTREAM_ON:
16887 			case FILETABLE_COLLATE_FILENAME:
16888 			case FILETABLE_DIRECTORY:
16889 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
16890 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
16891 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
16892 			case FILTER_PREDICATE:
16893 			case HISTORY_RETENTION_PERIOD:
16894 			case HISTORY_TABLE:
16895 			case LOCK_ESCALATION:
16896 			case DROP_EXISTING:
16897 			case ROW_NUMBER:
16898 			case FIRST:
16899 			case DATETIME2:
16900 			case OUTPUT:
16901 			case INSERTED:
16902 			case DELETED:
16903 			case FILENAME:
16904 			case SIZE:
16905 			case MAXSIZE:
16906 			case FILEGROWTH:
16907 			case UNLIMITED:
16908 			case KB:
16909 			case MB:
16910 			case GB:
16911 			case TB:
16912 			case CONTAINS:
16913 			case MEMORY_OPTIMIZED_DATA:
16914 			case FILEGROUP:
16915 			case NON_TRANSACTED_ACCESS:
16916 			case DB_CHAINING:
16917 			case TRUSTWORTHY:
16918 			case FORWARD_ONLY:
16919 			case KEYSET:
16920 			case FAST_FORWARD:
16921 			case SCROLL_LOCKS:
16922 			case OPTIMISTIC:
16923 			case TYPE_WARNING:
16924 			case SCHEMABINDING:
16925 			case CALLER:
16926 			case INPUT:
16927 			case OWNER:
16928 			case SNAPSHOT:
16929 			case REPEATABLE:
16930 			case SERIALIZABLE:
16931 			case NATIVE_COMPILATION:
16932 			case VIEW_METADATA:
16933 			case INSTEAD:
16934 			case APPEND:
16935 			case INCREMENT:
16936 			case CACHE:
16937 			case MINVALUE:
16938 			case MAXVALUE:
16939 			case RESTART:
16940 			case LOB_COMPACTION:
16941 			case COMPRESS_ALL_ROW_GROUPS:
16942 			case REORGANIZE:
16943 			case RESUME:
16944 			case PAUSE:
16945 			case ABORT:
16946 			case ACCELERATED_DATABASE_RECOVERY:
16947 			case PERSISTENT_VERSION_STORE_FILEGROUP:
16948 			case IMMEDIATE:
16949 			case NO_WAIT:
16950 			case TARGET_RECOVERY_TIME:
16951 			case SECONDS:
16952 			case HONOR_BROKER_PRIORITY:
16953 			case ERROR_BROKER_CONVERSATIONS:
16954 			case NEW_BROKER:
16955 			case DISABLE_BROKER:
16956 			case ENABLE_BROKER:
16957 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
16958 			case READ_COMMITTED_SNAPSHOT:
16959 			case ALLOW_SNAPSHOT_ISOLATION:
16960 			case RECURSIVE_TRIGGERS:
16961 			case QUOTED_IDENTIFIER:
16962 			case NUMERIC_ROUNDABORT:
16963 			case CONCAT_NULL_YIELDS_NULL:
16964 			case COMPATIBILITY_LEVEL:
16965 			case ARITHABORT:
16966 			case ANSI_WARNINGS:
16967 			case ANSI_PADDING:
16968 			case ANSI_NULLS:
16969 			case ANSI_NULL_DEFAULT:
16970 			case PAGE_VERIFY:
16971 			case CHECKSUM:
16972 			case TORN_PAGE_DETECTION:
16973 			case BULK_LOGGED:
16974 			case RECOVERY:
16975 			case TOTAL_EXECUTION_CPU_TIME_MS:
16976 			case TOTAL_COMPILE_CPU_TIME_MS:
16977 			case STALE_CAPTURE_POLICY_THRESHOLD:
16978 			case EXECUTION_COUNT:
16979 			case QUERY_CAPTURE_POLICY:
16980 			case WAIT_STATS_CAPTURE_MODE:
16981 			case MAX_PLANS_PER_QUERY:
16982 			case QUERY_CAPTURE_MODE:
16983 			case SIZE_BASED_CLEANUP_MODE:
16984 			case INTERVAL_LENGTH_MINUTES:
16985 			case MAX_STORAGE_SIZE_MB:
16986 			case DATA_FLUSH_INTERVAL_SECONDS:
16987 			case CLEANUP_POLICY:
16988 			case CUSTOM:
16989 			case STALE_QUERY_THRESHOLD_DAYS:
16990 			case OPERATION_MODE:
16991 			case QUERY_STORE:
16992 			case CURSOR_DEFAULT:
16993 			case GLOBAL:
16994 			case CURSOR_CLOSE_ON_COMMIT:
16995 			case HOURS:
16996 			case CHANGE_RETENTION:
16997 			case AUTO_CLEANUP:
16998 			case CHANGE_TRACKING:
16999 			case AUTOMATIC_TUNING:
17000 			case FORCE_LAST_GOOD_PLAN:
17001 			case AUTO_UPDATE_STATISTICS_ASYNC:
17002 			case AUTO_UPDATE_STATISTICS:
17003 			case AUTO_SHRINK:
17004 			case AUTO_CREATE_STATISTICS:
17005 			case INCREMENTAL:
17006 			case AUTO_CLOSE:
17007 			case DATA_RETENTION:
17008 			case TEMPORAL_HISTORY_RETENTION:
17009 			case EDITION:
17010 			case MIXED_PAGE_ALLOCATION:
17011 			case DISABLED:
17012 			case ALLOWED:
17013 			case HADR:
17014 			case MULTI_USER:
17015 			case RESTRICTED_USER:
17016 			case SINGLE_USER:
17017 			case OFFLINE:
17018 			case EMERGENCY:
17019 			case SUSPEND:
17020 			case DATE_CORRELATION_OPTIMIZATION:
17021 			case ELASTIC_POOL:
17022 			case SERVICE_OBJECTIVE:
17023 			case DATABASE_NAME:
17024 			case ALLOW_CONNECTIONS:
17025 			case GEO:
17026 			case NAMED:
17027 			case DATEFIRST:
17028 			case BACKUP_STORAGE_REDUNDANCY:
17029 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
17030 			case SECONDARY:
17031 			case FAILOVER:
17032 			case DEFAULT_FULLTEXT_LANGUAGE:
17033 			case DEFAULT_LANGUAGE:
17034 			case INLINE:
17035 			case NESTED_TRIGGERS:
17036 			case TRANSFORM_NOISE_WORDS:
17037 			case TWO_DIGIT_YEAR_CUTOFF:
17038 			case PERSISTENT_LOG_BUFFER:
17039 			case DIRECTORY_NAME:
17040 			case DATEFORMAT:
17041 			case DELAYED_DURABILITY:
17042 			case AUTHORIZATION:
17043 			case TRANSFER:
17044 			case PROVIDER:
17045 			case SEARCH:
17046 			case MEMBER:
17047 			case IDENTIFIER_:
17048 			case DELIMITED_IDENTIFIER_:
17049 				{
17050 				setState(2593);
17051 				computedColumnForeignKeyConstraint();
17052 				}
17053 				break;
17054 			case CHECK:
17055 				{
17056 				setState(2594);
17057 				checkConstraint();
17058 				}
17059 				break;
17060 			default:
17061 				throw new NoViableAltException(this);
17062 			}
17063 			}
17064 		}
17065 		catch (RecognitionException re) {
17066 			_localctx.exception = re;
17067 			_errHandler.reportError(this, re);
17068 			_errHandler.recover(this, re);
17069 		}
17070 		finally {
17071 			exitRule();
17072 		}
17073 		return _localctx;
17074 	}
17075 
17076 	public static class ComputedColumnForeignKeyConstraintContext extends ParserRuleContext {
17077 		public TableNameContext tableName() {
17078 			return getRuleContext(TableNameContext.class,0);
17079 		}
17080 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
17081 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
17082 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17083 		public ColumnNameContext columnName() {
17084 			return getRuleContext(ColumnNameContext.class,0);
17085 		}
17086 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17087 		public List<ComputedColumnForeignKeyOnActionContext> computedColumnForeignKeyOnAction() {
17088 			return getRuleContexts(ComputedColumnForeignKeyOnActionContext.class);
17089 		}
17090 		public ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction(int i) {
17091 			return getRuleContext(ComputedColumnForeignKeyOnActionContext.class,i);
17092 		}
17093 		public ComputedColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17094 			super(parent, invokingState);
17095 		}
17096 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyConstraint; }
17097 		@Override
17098 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17099 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyConstraint(this);
17100 			else return visitor.visitChildren(this);
17101 		}
17102 	}
17103 
17104 	public final ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() throws RecognitionException {
17105 		ComputedColumnForeignKeyConstraintContext _localctx = new ComputedColumnForeignKeyConstraintContext(_ctx, getState());
17106 		enterRule(_localctx, 350, RULE_computedColumnForeignKeyConstraint);
17107 		int _la;
17108 		try {
17109 			enterOuterAlt(_localctx, 1);
17110 			{
17111 			setState(2599);
17112 			_errHandler.sync(this);
17113 			_la = _input.LA(1);
17114 			if (_la==FOREIGN) {
17115 				{
17116 				setState(2597);
17117 				match(FOREIGN);
17118 				setState(2598);
17119 				match(KEY);
17120 				}
17121 			}
17122 
17123 			setState(2601);
17124 			tableName();
17125 			setState(2606);
17126 			_errHandler.sync(this);
17127 			switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) {
17128 			case 1:
17129 				{
17130 				setState(2602);
17131 				match(LP_);
17132 				setState(2603);
17133 				columnName();
17134 				setState(2604);
17135 				match(RP_);
17136 				}
17137 				break;
17138 			}
17139 			setState(2611);
17140 			_errHandler.sync(this);
17141 			_la = _input.LA(1);
17142 			while (_la==ON || _la==NOT) {
17143 				{
17144 				{
17145 				setState(2608);
17146 				computedColumnForeignKeyOnAction();
17147 				}
17148 				}
17149 				setState(2613);
17150 				_errHandler.sync(this);
17151 				_la = _input.LA(1);
17152 			}
17153 			}
17154 		}
17155 		catch (RecognitionException re) {
17156 			_localctx.exception = re;
17157 			_errHandler.reportError(this, re);
17158 			_errHandler.recover(this, re);
17159 		}
17160 		finally {
17161 			exitRule();
17162 		}
17163 		return _localctx;
17164 	}
17165 
17166 	public static class ComputedColumnForeignKeyOnActionContext extends ParserRuleContext {
17167 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17168 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
17169 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
17170 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
17171 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
17172 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
17173 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17174 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17175 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
17176 		public ComputedColumnForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
17177 			super(parent, invokingState);
17178 		}
17179 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyOnAction; }
17180 		@Override
17181 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17182 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyOnAction(this);
17183 			else return visitor.visitChildren(this);
17184 		}
17185 	}
17186 
17187 	public final ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction() throws RecognitionException {
17188 		ComputedColumnForeignKeyOnActionContext _localctx = new ComputedColumnForeignKeyOnActionContext(_ctx, getState());
17189 		enterRule(_localctx, 352, RULE_computedColumnForeignKeyOnAction);
17190 		try {
17191 			setState(2628);
17192 			_errHandler.sync(this);
17193 			switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) {
17194 			case 1:
17195 				enterOuterAlt(_localctx, 1);
17196 				{
17197 				setState(2614);
17198 				match(ON);
17199 				setState(2615);
17200 				match(DELETE);
17201 				setState(2619);
17202 				_errHandler.sync(this);
17203 				switch (_input.LA(1)) {
17204 				case NO:
17205 					{
17206 					setState(2616);
17207 					match(NO);
17208 					setState(2617);
17209 					match(ACTION);
17210 					}
17211 					break;
17212 				case CASCADE:
17213 					{
17214 					setState(2618);
17215 					match(CASCADE);
17216 					}
17217 					break;
17218 				default:
17219 					throw new NoViableAltException(this);
17220 				}
17221 				}
17222 				break;
17223 			case 2:
17224 				enterOuterAlt(_localctx, 2);
17225 				{
17226 				setState(2621);
17227 				match(ON);
17228 				setState(2622);
17229 				match(UPDATE);
17230 				setState(2623);
17231 				match(NO);
17232 				setState(2624);
17233 				match(ACTION);
17234 				}
17235 				break;
17236 			case 3:
17237 				enterOuterAlt(_localctx, 3);
17238 				{
17239 				setState(2625);
17240 				match(NOT);
17241 				setState(2626);
17242 				match(FOR);
17243 				setState(2627);
17244 				match(REPLICATION);
17245 				}
17246 				break;
17247 			}
17248 		}
17249 		catch (RecognitionException re) {
17250 			_localctx.exception = re;
17251 			_errHandler.reportError(this, re);
17252 			_errHandler.recover(this, re);
17253 		}
17254 		finally {
17255 			exitRule();
17256 		}
17257 		return _localctx;
17258 	}
17259 
17260 	public static class PrimaryKeyConstraintContext extends ParserRuleContext {
17261 		public PrimaryKeyContext primaryKey() {
17262 			return getRuleContext(PrimaryKeyContext.class,0);
17263 		}
17264 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
17265 		public DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() {
17266 			return getRuleContext(DiskTablePrimaryKeyConstraintOptionContext.class,0);
17267 		}
17268 		public MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() {
17269 			return getRuleContext(MemoryTablePrimaryKeyConstraintOptionContext.class,0);
17270 		}
17271 		public PrimaryKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17272 			super(parent, invokingState);
17273 		}
17274 		@Override public int getRuleIndex() { return RULE_primaryKeyConstraint; }
17275 		@Override
17276 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17277 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyConstraint(this);
17278 			else return visitor.visitChildren(this);
17279 		}
17280 	}
17281 
17282 	public final PrimaryKeyConstraintContext primaryKeyConstraint() throws RecognitionException {
17283 		PrimaryKeyConstraintContext _localctx = new PrimaryKeyConstraintContext(_ctx, getState());
17284 		enterRule(_localctx, 354, RULE_primaryKeyConstraint);
17285 		try {
17286 			enterOuterAlt(_localctx, 1);
17287 			{
17288 			setState(2632);
17289 			_errHandler.sync(this);
17290 			switch (_input.LA(1)) {
17291 			case PRIMARY:
17292 			case KEY:
17293 				{
17294 				setState(2630);
17295 				primaryKey();
17296 				}
17297 				break;
17298 			case UNIQUE:
17299 				{
17300 				setState(2631);
17301 				match(UNIQUE);
17302 				}
17303 				break;
17304 			default:
17305 				throw new NoViableAltException(this);
17306 			}
17307 			setState(2636);
17308 			_errHandler.sync(this);
17309 			switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) {
17310 			case 1:
17311 				{
17312 				setState(2634);
17313 				diskTablePrimaryKeyConstraintOption();
17314 				}
17315 				break;
17316 			case 2:
17317 				{
17318 				setState(2635);
17319 				memoryTablePrimaryKeyConstraintOption();
17320 				}
17321 				break;
17322 			}
17323 			}
17324 		}
17325 		catch (RecognitionException re) {
17326 			_localctx.exception = re;
17327 			_errHandler.reportError(this, re);
17328 			_errHandler.recover(this, re);
17329 		}
17330 		finally {
17331 			exitRule();
17332 		}
17333 		return _localctx;
17334 	}
17335 
17336 	public static class DiskTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
17337 		public ClusterOptionContext clusterOption() {
17338 			return getRuleContext(ClusterOptionContext.class,0);
17339 		}
17340 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
17341 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
17342 		}
17343 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
17344 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
17345 		}
17346 		public DiskTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17347 			super(parent, invokingState);
17348 		}
17349 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryKeyConstraintOption; }
17350 		@Override
17351 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17352 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryKeyConstraintOption(this);
17353 			else return visitor.visitChildren(this);
17354 		}
17355 	}
17356 
17357 	public final DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() throws RecognitionException {
17358 		DiskTablePrimaryKeyConstraintOptionContext _localctx = new DiskTablePrimaryKeyConstraintOptionContext(_ctx, getState());
17359 		enterRule(_localctx, 356, RULE_diskTablePrimaryKeyConstraintOption);
17360 		int _la;
17361 		try {
17362 			enterOuterAlt(_localctx, 1);
17363 			{
17364 			setState(2639);
17365 			_errHandler.sync(this);
17366 			_la = _input.LA(1);
17367 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
17368 				{
17369 				setState(2638);
17370 				clusterOption();
17371 				}
17372 			}
17373 
17374 			setState(2642);
17375 			_errHandler.sync(this);
17376 			switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) {
17377 			case 1:
17378 				{
17379 				setState(2641);
17380 				primaryKeyWithClause();
17381 				}
17382 				break;
17383 			}
17384 			setState(2645);
17385 			_errHandler.sync(this);
17386 			_la = _input.LA(1);
17387 			if (_la==ON) {
17388 				{
17389 				setState(2644);
17390 				primaryKeyOnClause();
17391 				}
17392 			}
17393 
17394 			}
17395 		}
17396 		catch (RecognitionException re) {
17397 			_localctx.exception = re;
17398 			_errHandler.reportError(this, re);
17399 			_errHandler.recover(this, re);
17400 		}
17401 		finally {
17402 			exitRule();
17403 		}
17404 		return _localctx;
17405 	}
17406 
17407 	public static class ClusterOptionContext extends ParserRuleContext {
17408 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
17409 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17410 		public ClusterOptionContext(ParserRuleContext parent, int invokingState) {
17411 			super(parent, invokingState);
17412 		}
17413 		@Override public int getRuleIndex() { return RULE_clusterOption; }
17414 		@Override
17415 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17416 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClusterOption(this);
17417 			else return visitor.visitChildren(this);
17418 		}
17419 	}
17420 
17421 	public final ClusterOptionContext clusterOption() throws RecognitionException {
17422 		ClusterOptionContext _localctx = new ClusterOptionContext(_ctx, getState());
17423 		enterRule(_localctx, 358, RULE_clusterOption);
17424 		int _la;
17425 		try {
17426 			enterOuterAlt(_localctx, 1);
17427 			{
17428 			setState(2647);
17429 			_la = _input.LA(1);
17430 			if ( !(_la==CLUSTERED || _la==NONCLUSTERED) ) {
17431 			_errHandler.recoverInline(this);
17432 			}
17433 			else {
17434 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
17435 				_errHandler.reportMatch(this);
17436 				consume();
17437 			}
17438 			}
17439 		}
17440 		catch (RecognitionException re) {
17441 			_localctx.exception = re;
17442 			_errHandler.reportError(this, re);
17443 			_errHandler.recover(this, re);
17444 		}
17445 		finally {
17446 			exitRule();
17447 		}
17448 		return _localctx;
17449 	}
17450 
17451 	public static class PrimaryKeyWithClauseContext extends ParserRuleContext {
17452 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17453 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
17454 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
17455 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
17456 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17457 		public List<IndexOptionContext> indexOption() {
17458 			return getRuleContexts(IndexOptionContext.class);
17459 		}
17460 		public IndexOptionContext indexOption(int i) {
17461 			return getRuleContext(IndexOptionContext.class,i);
17462 		}
17463 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17464 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17465 		public TerminalNode COMMA_(int i) {
17466 			return getToken(SQLServerStatementParser.COMMA_, i);
17467 		}
17468 		public PrimaryKeyWithClauseContext(ParserRuleContext parent, int invokingState) {
17469 			super(parent, invokingState);
17470 		}
17471 		@Override public int getRuleIndex() { return RULE_primaryKeyWithClause; }
17472 		@Override
17473 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17474 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyWithClause(this);
17475 			else return visitor.visitChildren(this);
17476 		}
17477 	}
17478 
17479 	public final PrimaryKeyWithClauseContext primaryKeyWithClause() throws RecognitionException {
17480 		PrimaryKeyWithClauseContext _localctx = new PrimaryKeyWithClauseContext(_ctx, getState());
17481 		enterRule(_localctx, 360, RULE_primaryKeyWithClause);
17482 		int _la;
17483 		try {
17484 			enterOuterAlt(_localctx, 1);
17485 			{
17486 			setState(2649);
17487 			match(WITH);
17488 			setState(2664);
17489 			_errHandler.sync(this);
17490 			switch (_input.LA(1)) {
17491 			case FILLFACTOR:
17492 				{
17493 				setState(2650);
17494 				match(FILLFACTOR);
17495 				setState(2651);
17496 				match(EQ_);
17497 				setState(2652);
17498 				match(NUMBER_);
17499 				}
17500 				break;
17501 			case LP_:
17502 				{
17503 				setState(2653);
17504 				match(LP_);
17505 				setState(2654);
17506 				indexOption();
17507 				setState(2659);
17508 				_errHandler.sync(this);
17509 				_la = _input.LA(1);
17510 				while (_la==COMMA_) {
17511 					{
17512 					{
17513 					setState(2655);
17514 					match(COMMA_);
17515 					setState(2656);
17516 					indexOption();
17517 					}
17518 					}
17519 					setState(2661);
17520 					_errHandler.sync(this);
17521 					_la = _input.LA(1);
17522 				}
17523 				setState(2662);
17524 				match(RP_);
17525 				}
17526 				break;
17527 			default:
17528 				throw new NoViableAltException(this);
17529 			}
17530 			}
17531 		}
17532 		catch (RecognitionException re) {
17533 			_localctx.exception = re;
17534 			_errHandler.reportError(this, re);
17535 			_errHandler.recover(this, re);
17536 		}
17537 		finally {
17538 			exitRule();
17539 		}
17540 		return _localctx;
17541 	}
17542 
17543 	public static class PrimaryKeyOnClauseContext extends ParserRuleContext {
17544 		public OnSchemaColumnContext onSchemaColumn() {
17545 			return getRuleContext(OnSchemaColumnContext.class,0);
17546 		}
17547 		public OnFileGroupContext onFileGroup() {
17548 			return getRuleContext(OnFileGroupContext.class,0);
17549 		}
17550 		public OnStringContext onString() {
17551 			return getRuleContext(OnStringContext.class,0);
17552 		}
17553 		public PrimaryKeyOnClauseContext(ParserRuleContext parent, int invokingState) {
17554 			super(parent, invokingState);
17555 		}
17556 		@Override public int getRuleIndex() { return RULE_primaryKeyOnClause; }
17557 		@Override
17558 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17559 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyOnClause(this);
17560 			else return visitor.visitChildren(this);
17561 		}
17562 	}
17563 
17564 	public final PrimaryKeyOnClauseContext primaryKeyOnClause() throws RecognitionException {
17565 		PrimaryKeyOnClauseContext _localctx = new PrimaryKeyOnClauseContext(_ctx, getState());
17566 		enterRule(_localctx, 362, RULE_primaryKeyOnClause);
17567 		try {
17568 			setState(2669);
17569 			_errHandler.sync(this);
17570 			switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) {
17571 			case 1:
17572 				enterOuterAlt(_localctx, 1);
17573 				{
17574 				setState(2666);
17575 				onSchemaColumn();
17576 				}
17577 				break;
17578 			case 2:
17579 				enterOuterAlt(_localctx, 2);
17580 				{
17581 				setState(2667);
17582 				onFileGroup();
17583 				}
17584 				break;
17585 			case 3:
17586 				enterOuterAlt(_localctx, 3);
17587 				{
17588 				setState(2668);
17589 				onString();
17590 				}
17591 				break;
17592 			}
17593 		}
17594 		catch (RecognitionException re) {
17595 			_localctx.exception = re;
17596 			_errHandler.reportError(this, re);
17597 			_errHandler.recover(this, re);
17598 		}
17599 		finally {
17600 			exitRule();
17601 		}
17602 		return _localctx;
17603 	}
17604 
17605 	public static class OnSchemaColumnContext extends ParserRuleContext {
17606 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17607 		public SchemaNameContext schemaName() {
17608 			return getRuleContext(SchemaNameContext.class,0);
17609 		}
17610 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17611 		public ColumnNameContext columnName() {
17612 			return getRuleContext(ColumnNameContext.class,0);
17613 		}
17614 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17615 		public OnSchemaColumnContext(ParserRuleContext parent, int invokingState) {
17616 			super(parent, invokingState);
17617 		}
17618 		@Override public int getRuleIndex() { return RULE_onSchemaColumn; }
17619 		@Override
17620 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17621 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnSchemaColumn(this);
17622 			else return visitor.visitChildren(this);
17623 		}
17624 	}
17625 
17626 	public final OnSchemaColumnContext onSchemaColumn() throws RecognitionException {
17627 		OnSchemaColumnContext _localctx = new OnSchemaColumnContext(_ctx, getState());
17628 		enterRule(_localctx, 364, RULE_onSchemaColumn);
17629 		try {
17630 			enterOuterAlt(_localctx, 1);
17631 			{
17632 			setState(2671);
17633 			match(ON);
17634 			setState(2672);
17635 			schemaName();
17636 			setState(2673);
17637 			match(LP_);
17638 			setState(2674);
17639 			columnName();
17640 			setState(2675);
17641 			match(RP_);
17642 			}
17643 		}
17644 		catch (RecognitionException re) {
17645 			_localctx.exception = re;
17646 			_errHandler.reportError(this, re);
17647 			_errHandler.recover(this, re);
17648 		}
17649 		finally {
17650 			exitRule();
17651 		}
17652 		return _localctx;
17653 	}
17654 
17655 	public static class OnFileGroupContext extends ParserRuleContext {
17656 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17657 		public IgnoredIdentifierContext ignoredIdentifier() {
17658 			return getRuleContext(IgnoredIdentifierContext.class,0);
17659 		}
17660 		public OnFileGroupContext(ParserRuleContext parent, int invokingState) {
17661 			super(parent, invokingState);
17662 		}
17663 		@Override public int getRuleIndex() { return RULE_onFileGroup; }
17664 		@Override
17665 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17666 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnFileGroup(this);
17667 			else return visitor.visitChildren(this);
17668 		}
17669 	}
17670 
17671 	public final OnFileGroupContext onFileGroup() throws RecognitionException {
17672 		OnFileGroupContext _localctx = new OnFileGroupContext(_ctx, getState());
17673 		enterRule(_localctx, 366, RULE_onFileGroup);
17674 		try {
17675 			enterOuterAlt(_localctx, 1);
17676 			{
17677 			setState(2677);
17678 			match(ON);
17679 			setState(2678);
17680 			ignoredIdentifier();
17681 			}
17682 		}
17683 		catch (RecognitionException re) {
17684 			_localctx.exception = re;
17685 			_errHandler.reportError(this, re);
17686 			_errHandler.recover(this, re);
17687 		}
17688 		finally {
17689 			exitRule();
17690 		}
17691 		return _localctx;
17692 	}
17693 
17694 	public static class OnStringContext extends ParserRuleContext {
17695 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17696 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
17697 		public OnStringContext(ParserRuleContext parent, int invokingState) {
17698 			super(parent, invokingState);
17699 		}
17700 		@Override public int getRuleIndex() { return RULE_onString; }
17701 		@Override
17702 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17703 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnString(this);
17704 			else return visitor.visitChildren(this);
17705 		}
17706 	}
17707 
17708 	public final OnStringContext onString() throws RecognitionException {
17709 		OnStringContext _localctx = new OnStringContext(_ctx, getState());
17710 		enterRule(_localctx, 368, RULE_onString);
17711 		try {
17712 			enterOuterAlt(_localctx, 1);
17713 			{
17714 			setState(2680);
17715 			match(ON);
17716 			setState(2681);
17717 			match(STRING_);
17718 			}
17719 		}
17720 		catch (RecognitionException re) {
17721 			_localctx.exception = re;
17722 			_errHandler.reportError(this, re);
17723 			_errHandler.recover(this, re);
17724 		}
17725 		finally {
17726 			exitRule();
17727 		}
17728 		return _localctx;
17729 	}
17730 
17731 	public static class MemoryTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
17732 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17733 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
17734 		public WithBucketContext withBucket() {
17735 			return getRuleContext(WithBucketContext.class,0);
17736 		}
17737 		public MemoryTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17738 			super(parent, invokingState);
17739 		}
17740 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryKeyConstraintOption; }
17741 		@Override
17742 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17743 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryKeyConstraintOption(this);
17744 			else return visitor.visitChildren(this);
17745 		}
17746 	}
17747 
17748 	public final MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() throws RecognitionException {
17749 		MemoryTablePrimaryKeyConstraintOptionContext _localctx = new MemoryTablePrimaryKeyConstraintOptionContext(_ctx, getState());
17750 		enterRule(_localctx, 370, RULE_memoryTablePrimaryKeyConstraintOption);
17751 		try {
17752 			setState(2689);
17753 			_errHandler.sync(this);
17754 			switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) {
17755 			case 1:
17756 				enterOuterAlt(_localctx, 1);
17757 				{
17758 				setState(2683);
17759 				match(NONCLUSTERED);
17760 				}
17761 				break;
17762 			case 2:
17763 				enterOuterAlt(_localctx, 2);
17764 				{
17765 				setState(2684);
17766 				match(NONCLUSTERED);
17767 				setState(2685);
17768 				match(HASH);
17769 				setState(2687);
17770 				_errHandler.sync(this);
17771 				switch ( getInterpreter().adaptivePredict(_input,209,_ctx) ) {
17772 				case 1:
17773 					{
17774 					setState(2686);
17775 					withBucket();
17776 					}
17777 					break;
17778 				}
17779 				}
17780 				break;
17781 			}
17782 		}
17783 		catch (RecognitionException re) {
17784 			_localctx.exception = re;
17785 			_errHandler.reportError(this, re);
17786 			_errHandler.recover(this, re);
17787 		}
17788 		finally {
17789 			exitRule();
17790 		}
17791 		return _localctx;
17792 	}
17793 
17794 	public static class WithBucketContext extends ParserRuleContext {
17795 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17796 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17797 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
17798 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
17799 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
17800 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17801 		public WithBucketContext(ParserRuleContext parent, int invokingState) {
17802 			super(parent, invokingState);
17803 		}
17804 		@Override public int getRuleIndex() { return RULE_withBucket; }
17805 		@Override
17806 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17807 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithBucket(this);
17808 			else return visitor.visitChildren(this);
17809 		}
17810 	}
17811 
17812 	public final WithBucketContext withBucket() throws RecognitionException {
17813 		WithBucketContext _localctx = new WithBucketContext(_ctx, getState());
17814 		enterRule(_localctx, 372, RULE_withBucket);
17815 		try {
17816 			enterOuterAlt(_localctx, 1);
17817 			{
17818 			setState(2691);
17819 			match(WITH);
17820 			setState(2692);
17821 			match(LP_);
17822 			setState(2693);
17823 			match(BUCKET_COUNT);
17824 			setState(2694);
17825 			match(EQ_);
17826 			setState(2695);
17827 			match(NUMBER_);
17828 			setState(2696);
17829 			match(RP_);
17830 			}
17831 		}
17832 		catch (RecognitionException re) {
17833 			_localctx.exception = re;
17834 			_errHandler.reportError(this, re);
17835 			_errHandler.recover(this, re);
17836 		}
17837 		finally {
17838 			exitRule();
17839 		}
17840 		return _localctx;
17841 	}
17842 
17843 	public static class ColumnForeignKeyConstraintContext extends ParserRuleContext {
17844 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
17845 		public TableNameContext tableName() {
17846 			return getRuleContext(TableNameContext.class,0);
17847 		}
17848 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
17849 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
17850 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17851 		public ColumnNameContext columnName() {
17852 			return getRuleContext(ColumnNameContext.class,0);
17853 		}
17854 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17855 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
17856 			return getRuleContexts(ForeignKeyOnActionContext.class);
17857 		}
17858 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
17859 			return getRuleContext(ForeignKeyOnActionContext.class,i);
17860 		}
17861 		public ColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17862 			super(parent, invokingState);
17863 		}
17864 		@Override public int getRuleIndex() { return RULE_columnForeignKeyConstraint; }
17865 		@Override
17866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnForeignKeyConstraint(this);
17868 			else return visitor.visitChildren(this);
17869 		}
17870 	}
17871 
17872 	public final ColumnForeignKeyConstraintContext columnForeignKeyConstraint() throws RecognitionException {
17873 		ColumnForeignKeyConstraintContext _localctx = new ColumnForeignKeyConstraintContext(_ctx, getState());
17874 		enterRule(_localctx, 374, RULE_columnForeignKeyConstraint);
17875 		int _la;
17876 		try {
17877 			int _alt;
17878 			enterOuterAlt(_localctx, 1);
17879 			{
17880 			setState(2700);
17881 			_errHandler.sync(this);
17882 			_la = _input.LA(1);
17883 			if (_la==FOREIGN) {
17884 				{
17885 				setState(2698);
17886 				match(FOREIGN);
17887 				setState(2699);
17888 				match(KEY);
17889 				}
17890 			}
17891 
17892 			setState(2702);
17893 			match(REFERENCES);
17894 			setState(2703);
17895 			tableName();
17896 			setState(2708);
17897 			_errHandler.sync(this);
17898 			switch ( getInterpreter().adaptivePredict(_input,212,_ctx) ) {
17899 			case 1:
17900 				{
17901 				setState(2704);
17902 				match(LP_);
17903 				setState(2705);
17904 				columnName();
17905 				setState(2706);
17906 				match(RP_);
17907 				}
17908 				break;
17909 			}
17910 			setState(2713);
17911 			_errHandler.sync(this);
17912 			_alt = getInterpreter().adaptivePredict(_input,213,_ctx);
17913 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
17914 				if ( _alt==1 ) {
17915 					{
17916 					{
17917 					setState(2710);
17918 					foreignKeyOnAction();
17919 					}
17920 					} 
17921 				}
17922 				setState(2715);
17923 				_errHandler.sync(this);
17924 				_alt = getInterpreter().adaptivePredict(_input,213,_ctx);
17925 			}
17926 			}
17927 		}
17928 		catch (RecognitionException re) {
17929 			_localctx.exception = re;
17930 			_errHandler.reportError(this, re);
17931 			_errHandler.recover(this, re);
17932 		}
17933 		finally {
17934 			exitRule();
17935 		}
17936 		return _localctx;
17937 	}
17938 
17939 	public static class ForeignKeyOnActionContext extends ParserRuleContext {
17940 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17941 		public ForeignKeyOnContext foreignKeyOn() {
17942 			return getRuleContext(ForeignKeyOnContext.class,0);
17943 		}
17944 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
17945 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
17946 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17947 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17948 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
17949 		public ForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
17950 			super(parent, invokingState);
17951 		}
17952 		@Override public int getRuleIndex() { return RULE_foreignKeyOnAction; }
17953 		@Override
17954 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17955 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOnAction(this);
17956 			else return visitor.visitChildren(this);
17957 		}
17958 	}
17959 
17960 	public final ForeignKeyOnActionContext foreignKeyOnAction() throws RecognitionException {
17961 		ForeignKeyOnActionContext _localctx = new ForeignKeyOnActionContext(_ctx, getState());
17962 		enterRule(_localctx, 376, RULE_foreignKeyOnAction);
17963 		int _la;
17964 		try {
17965 			setState(2722);
17966 			_errHandler.sync(this);
17967 			switch (_input.LA(1)) {
17968 			case ON:
17969 				enterOuterAlt(_localctx, 1);
17970 				{
17971 				setState(2716);
17972 				match(ON);
17973 				setState(2717);
17974 				_la = _input.LA(1);
17975 				if ( !(_la==UPDATE || _la==DELETE) ) {
17976 				_errHandler.recoverInline(this);
17977 				}
17978 				else {
17979 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
17980 					_errHandler.reportMatch(this);
17981 					consume();
17982 				}
17983 				setState(2718);
17984 				foreignKeyOn();
17985 				}
17986 				break;
17987 			case NOT:
17988 				enterOuterAlt(_localctx, 2);
17989 				{
17990 				setState(2719);
17991 				match(NOT);
17992 				setState(2720);
17993 				match(FOR);
17994 				setState(2721);
17995 				match(REPLICATION);
17996 				}
17997 				break;
17998 			default:
17999 				throw new NoViableAltException(this);
18000 			}
18001 		}
18002 		catch (RecognitionException re) {
18003 			_localctx.exception = re;
18004 			_errHandler.reportError(this, re);
18005 			_errHandler.recover(this, re);
18006 		}
18007 		finally {
18008 			exitRule();
18009 		}
18010 		return _localctx;
18011 	}
18012 
18013 	public static class ForeignKeyOnContext extends ParserRuleContext {
18014 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
18015 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
18016 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
18017 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
18018 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
18019 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
18020 		public ForeignKeyOnContext(ParserRuleContext parent, int invokingState) {
18021 			super(parent, invokingState);
18022 		}
18023 		@Override public int getRuleIndex() { return RULE_foreignKeyOn; }
18024 		@Override
18025 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18026 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOn(this);
18027 			else return visitor.visitChildren(this);
18028 		}
18029 	}
18030 
18031 	public final ForeignKeyOnContext foreignKeyOn() throws RecognitionException {
18032 		ForeignKeyOnContext _localctx = new ForeignKeyOnContext(_ctx, getState());
18033 		enterRule(_localctx, 378, RULE_foreignKeyOn);
18034 		int _la;
18035 		try {
18036 			setState(2729);
18037 			_errHandler.sync(this);
18038 			switch (_input.LA(1)) {
18039 			case NO:
18040 				enterOuterAlt(_localctx, 1);
18041 				{
18042 				setState(2724);
18043 				match(NO);
18044 				setState(2725);
18045 				match(ACTION);
18046 				}
18047 				break;
18048 			case CASCADE:
18049 				enterOuterAlt(_localctx, 2);
18050 				{
18051 				setState(2726);
18052 				match(CASCADE);
18053 				}
18054 				break;
18055 			case SET:
18056 				enterOuterAlt(_localctx, 3);
18057 				{
18058 				setState(2727);
18059 				match(SET);
18060 				setState(2728);
18061 				_la = _input.LA(1);
18062 				if ( !(_la==NULL || _la==DEFAULT) ) {
18063 				_errHandler.recoverInline(this);
18064 				}
18065 				else {
18066 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
18067 					_errHandler.reportMatch(this);
18068 					consume();
18069 				}
18070 				}
18071 				break;
18072 			default:
18073 				throw new NoViableAltException(this);
18074 			}
18075 		}
18076 		catch (RecognitionException re) {
18077 			_localctx.exception = re;
18078 			_errHandler.reportError(this, re);
18079 			_errHandler.recover(this, re);
18080 		}
18081 		finally {
18082 			exitRule();
18083 		}
18084 		return _localctx;
18085 	}
18086 
18087 	public static class CheckConstraintContext extends ParserRuleContext {
18088 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
18089 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18090 		public ExprContext expr() {
18091 			return getRuleContext(ExprContext.class,0);
18092 		}
18093 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18094 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
18095 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18096 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
18097 		public CheckConstraintContext(ParserRuleContext parent, int invokingState) {
18098 			super(parent, invokingState);
18099 		}
18100 		@Override public int getRuleIndex() { return RULE_checkConstraint; }
18101 		@Override
18102 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18103 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCheckConstraint(this);
18104 			else return visitor.visitChildren(this);
18105 		}
18106 	}
18107 
18108 	public final CheckConstraintContext checkConstraint() throws RecognitionException {
18109 		CheckConstraintContext _localctx = new CheckConstraintContext(_ctx, getState());
18110 		enterRule(_localctx, 380, RULE_checkConstraint);
18111 		int _la;
18112 		try {
18113 			enterOuterAlt(_localctx, 1);
18114 			{
18115 			setState(2731);
18116 			match(CHECK);
18117 			setState(2735);
18118 			_errHandler.sync(this);
18119 			_la = _input.LA(1);
18120 			if (_la==NOT) {
18121 				{
18122 				setState(2732);
18123 				match(NOT);
18124 				setState(2733);
18125 				match(FOR);
18126 				setState(2734);
18127 				match(REPLICATION);
18128 				}
18129 			}
18130 
18131 			setState(2737);
18132 			match(LP_);
18133 			setState(2738);
18134 			expr(0);
18135 			setState(2739);
18136 			match(RP_);
18137 			}
18138 		}
18139 		catch (RecognitionException re) {
18140 			_localctx.exception = re;
18141 			_errHandler.reportError(this, re);
18142 			_errHandler.recover(this, re);
18143 		}
18144 		finally {
18145 			exitRule();
18146 		}
18147 		return _localctx;
18148 	}
18149 
18150 	public static class ColumnIndexContext extends ParserRuleContext {
18151 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
18152 		public IndexNameContext indexName() {
18153 			return getRuleContext(IndexNameContext.class,0);
18154 		}
18155 		public ClusterOptionContext clusterOption() {
18156 			return getRuleContext(ClusterOptionContext.class,0);
18157 		}
18158 		public WithIndexOptionContext withIndexOption() {
18159 			return getRuleContext(WithIndexOptionContext.class,0);
18160 		}
18161 		public IndexOnClauseContext indexOnClause() {
18162 			return getRuleContext(IndexOnClauseContext.class,0);
18163 		}
18164 		public FileStreamOnContext fileStreamOn() {
18165 			return getRuleContext(FileStreamOnContext.class,0);
18166 		}
18167 		public ColumnIndexContext(ParserRuleContext parent, int invokingState) {
18168 			super(parent, invokingState);
18169 		}
18170 		@Override public int getRuleIndex() { return RULE_columnIndex; }
18171 		@Override
18172 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18173 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnIndex(this);
18174 			else return visitor.visitChildren(this);
18175 		}
18176 	}
18177 
18178 	public final ColumnIndexContext columnIndex() throws RecognitionException {
18179 		ColumnIndexContext _localctx = new ColumnIndexContext(_ctx, getState());
18180 		enterRule(_localctx, 382, RULE_columnIndex);
18181 		int _la;
18182 		try {
18183 			enterOuterAlt(_localctx, 1);
18184 			{
18185 			setState(2741);
18186 			match(INDEX);
18187 			setState(2742);
18188 			indexName();
18189 			setState(2744);
18190 			_errHandler.sync(this);
18191 			_la = _input.LA(1);
18192 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
18193 				{
18194 				setState(2743);
18195 				clusterOption();
18196 				}
18197 			}
18198 
18199 			setState(2747);
18200 			_errHandler.sync(this);
18201 			switch ( getInterpreter().adaptivePredict(_input,218,_ctx) ) {
18202 			case 1:
18203 				{
18204 				setState(2746);
18205 				withIndexOption();
18206 				}
18207 				break;
18208 			}
18209 			setState(2750);
18210 			_errHandler.sync(this);
18211 			_la = _input.LA(1);
18212 			if (_la==ON) {
18213 				{
18214 				setState(2749);
18215 				indexOnClause();
18216 				}
18217 			}
18218 
18219 			setState(2753);
18220 			_errHandler.sync(this);
18221 			_la = _input.LA(1);
18222 			if (_la==FILESTREAM_ON) {
18223 				{
18224 				setState(2752);
18225 				fileStreamOn();
18226 				}
18227 			}
18228 
18229 			}
18230 		}
18231 		catch (RecognitionException re) {
18232 			_localctx.exception = re;
18233 			_errHandler.reportError(this, re);
18234 			_errHandler.recover(this, re);
18235 		}
18236 		finally {
18237 			exitRule();
18238 		}
18239 		return _localctx;
18240 	}
18241 
18242 	public static class WithIndexOptionContext extends ParserRuleContext {
18243 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
18244 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18245 		public List<IndexOptionContext> indexOption() {
18246 			return getRuleContexts(IndexOptionContext.class);
18247 		}
18248 		public IndexOptionContext indexOption(int i) {
18249 			return getRuleContext(IndexOptionContext.class,i);
18250 		}
18251 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18252 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18253 		public TerminalNode COMMA_(int i) {
18254 			return getToken(SQLServerStatementParser.COMMA_, i);
18255 		}
18256 		public WithIndexOptionContext(ParserRuleContext parent, int invokingState) {
18257 			super(parent, invokingState);
18258 		}
18259 		@Override public int getRuleIndex() { return RULE_withIndexOption; }
18260 		@Override
18261 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18262 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithIndexOption(this);
18263 			else return visitor.visitChildren(this);
18264 		}
18265 	}
18266 
18267 	public final WithIndexOptionContext withIndexOption() throws RecognitionException {
18268 		WithIndexOptionContext _localctx = new WithIndexOptionContext(_ctx, getState());
18269 		enterRule(_localctx, 384, RULE_withIndexOption);
18270 		int _la;
18271 		try {
18272 			enterOuterAlt(_localctx, 1);
18273 			{
18274 			setState(2755);
18275 			match(WITH);
18276 			setState(2756);
18277 			match(LP_);
18278 			setState(2757);
18279 			indexOption();
18280 			setState(2762);
18281 			_errHandler.sync(this);
18282 			_la = _input.LA(1);
18283 			while (_la==COMMA_) {
18284 				{
18285 				{
18286 				setState(2758);
18287 				match(COMMA_);
18288 				setState(2759);
18289 				indexOption();
18290 				}
18291 				}
18292 				setState(2764);
18293 				_errHandler.sync(this);
18294 				_la = _input.LA(1);
18295 			}
18296 			setState(2765);
18297 			match(RP_);
18298 			}
18299 		}
18300 		catch (RecognitionException re) {
18301 			_localctx.exception = re;
18302 			_errHandler.reportError(this, re);
18303 			_errHandler.recover(this, re);
18304 		}
18305 		finally {
18306 			exitRule();
18307 		}
18308 		return _localctx;
18309 	}
18310 
18311 	public static class IndexOnClauseContext extends ParserRuleContext {
18312 		public OnSchemaColumnContext onSchemaColumn() {
18313 			return getRuleContext(OnSchemaColumnContext.class,0);
18314 		}
18315 		public OnFileGroupContext onFileGroup() {
18316 			return getRuleContext(OnFileGroupContext.class,0);
18317 		}
18318 		public OnDefaultContext onDefault() {
18319 			return getRuleContext(OnDefaultContext.class,0);
18320 		}
18321 		public IndexOnClauseContext(ParserRuleContext parent, int invokingState) {
18322 			super(parent, invokingState);
18323 		}
18324 		@Override public int getRuleIndex() { return RULE_indexOnClause; }
18325 		@Override
18326 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18327 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOnClause(this);
18328 			else return visitor.visitChildren(this);
18329 		}
18330 	}
18331 
18332 	public final IndexOnClauseContext indexOnClause() throws RecognitionException {
18333 		IndexOnClauseContext _localctx = new IndexOnClauseContext(_ctx, getState());
18334 		enterRule(_localctx, 386, RULE_indexOnClause);
18335 		try {
18336 			setState(2770);
18337 			_errHandler.sync(this);
18338 			switch ( getInterpreter().adaptivePredict(_input,222,_ctx) ) {
18339 			case 1:
18340 				enterOuterAlt(_localctx, 1);
18341 				{
18342 				setState(2767);
18343 				onSchemaColumn();
18344 				}
18345 				break;
18346 			case 2:
18347 				enterOuterAlt(_localctx, 2);
18348 				{
18349 				setState(2768);
18350 				onFileGroup();
18351 				}
18352 				break;
18353 			case 3:
18354 				enterOuterAlt(_localctx, 3);
18355 				{
18356 				setState(2769);
18357 				onDefault();
18358 				}
18359 				break;
18360 			}
18361 		}
18362 		catch (RecognitionException re) {
18363 			_localctx.exception = re;
18364 			_errHandler.reportError(this, re);
18365 			_errHandler.recover(this, re);
18366 		}
18367 		finally {
18368 			exitRule();
18369 		}
18370 		return _localctx;
18371 	}
18372 
18373 	public static class OnDefaultContext extends ParserRuleContext {
18374 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18375 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
18376 		public OnDefaultContext(ParserRuleContext parent, int invokingState) {
18377 			super(parent, invokingState);
18378 		}
18379 		@Override public int getRuleIndex() { return RULE_onDefault; }
18380 		@Override
18381 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18382 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnDefault(this);
18383 			else return visitor.visitChildren(this);
18384 		}
18385 	}
18386 
18387 	public final OnDefaultContext onDefault() throws RecognitionException {
18388 		OnDefaultContext _localctx = new OnDefaultContext(_ctx, getState());
18389 		enterRule(_localctx, 388, RULE_onDefault);
18390 		try {
18391 			enterOuterAlt(_localctx, 1);
18392 			{
18393 			setState(2772);
18394 			match(ON);
18395 			setState(2773);
18396 			match(DEFAULT);
18397 			}
18398 		}
18399 		catch (RecognitionException re) {
18400 			_localctx.exception = re;
18401 			_errHandler.reportError(this, re);
18402 			_errHandler.recover(this, re);
18403 		}
18404 		finally {
18405 			exitRule();
18406 		}
18407 		return _localctx;
18408 	}
18409 
18410 	public static class FileStreamOnContext extends ParserRuleContext {
18411 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
18412 		public IgnoredIdentifierContext ignoredIdentifier() {
18413 			return getRuleContext(IgnoredIdentifierContext.class,0);
18414 		}
18415 		public SchemaNameContext schemaName() {
18416 			return getRuleContext(SchemaNameContext.class,0);
18417 		}
18418 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
18419 		public FileStreamOnContext(ParserRuleContext parent, int invokingState) {
18420 			super(parent, invokingState);
18421 		}
18422 		@Override public int getRuleIndex() { return RULE_fileStreamOn; }
18423 		@Override
18424 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18425 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOn(this);
18426 			else return visitor.visitChildren(this);
18427 		}
18428 	}
18429 
18430 	public final FileStreamOnContext fileStreamOn() throws RecognitionException {
18431 		FileStreamOnContext _localctx = new FileStreamOnContext(_ctx, getState());
18432 		enterRule(_localctx, 390, RULE_fileStreamOn);
18433 		try {
18434 			enterOuterAlt(_localctx, 1);
18435 			{
18436 			setState(2775);
18437 			match(FILESTREAM_ON);
18438 			setState(2779);
18439 			_errHandler.sync(this);
18440 			switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) {
18441 			case 1:
18442 				{
18443 				setState(2776);
18444 				ignoredIdentifier();
18445 				}
18446 				break;
18447 			case 2:
18448 				{
18449 				setState(2777);
18450 				schemaName();
18451 				}
18452 				break;
18453 			case 3:
18454 				{
18455 				setState(2778);
18456 				match(STRING_);
18457 				}
18458 				break;
18459 			}
18460 			}
18461 		}
18462 		catch (RecognitionException re) {
18463 			_localctx.exception = re;
18464 			_errHandler.reportError(this, re);
18465 			_errHandler.recover(this, re);
18466 		}
18467 		finally {
18468 			exitRule();
18469 		}
18470 		return _localctx;
18471 	}
18472 
18473 	public static class ColumnConstraintsContext extends ParserRuleContext {
18474 		public List<ColumnConstraintContext> columnConstraint() {
18475 			return getRuleContexts(ColumnConstraintContext.class);
18476 		}
18477 		public ColumnConstraintContext columnConstraint(int i) {
18478 			return getRuleContext(ColumnConstraintContext.class,i);
18479 		}
18480 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18481 		public TerminalNode COMMA_(int i) {
18482 			return getToken(SQLServerStatementParser.COMMA_, i);
18483 		}
18484 		public ColumnConstraintsContext(ParserRuleContext parent, int invokingState) {
18485 			super(parent, invokingState);
18486 		}
18487 		@Override public int getRuleIndex() { return RULE_columnConstraints; }
18488 		@Override
18489 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18490 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraints(this);
18491 			else return visitor.visitChildren(this);
18492 		}
18493 	}
18494 
18495 	public final ColumnConstraintsContext columnConstraints() throws RecognitionException {
18496 		ColumnConstraintsContext _localctx = new ColumnConstraintsContext(_ctx, getState());
18497 		enterRule(_localctx, 392, RULE_columnConstraints);
18498 		try {
18499 			int _alt;
18500 			enterOuterAlt(_localctx, 1);
18501 			{
18502 			setState(2789);
18503 			_errHandler.sync(this);
18504 			switch ( getInterpreter().adaptivePredict(_input,225,_ctx) ) {
18505 			case 1:
18506 				{
18507 				setState(2781);
18508 				columnConstraint();
18509 				setState(2786);
18510 				_errHandler.sync(this);
18511 				_alt = getInterpreter().adaptivePredict(_input,224,_ctx);
18512 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
18513 					if ( _alt==1 ) {
18514 						{
18515 						{
18516 						setState(2782);
18517 						match(COMMA_);
18518 						setState(2783);
18519 						columnConstraint();
18520 						}
18521 						} 
18522 					}
18523 					setState(2788);
18524 					_errHandler.sync(this);
18525 					_alt = getInterpreter().adaptivePredict(_input,224,_ctx);
18526 				}
18527 				}
18528 				break;
18529 			}
18530 			}
18531 		}
18532 		catch (RecognitionException re) {
18533 			_localctx.exception = re;
18534 			_errHandler.reportError(this, re);
18535 			_errHandler.recover(this, re);
18536 		}
18537 		finally {
18538 			exitRule();
18539 		}
18540 		return _localctx;
18541 	}
18542 
18543 	public static class ComputedColumnDefinitionContext extends ParserRuleContext {
18544 		public ColumnNameContext columnName() {
18545 			return getRuleContext(ColumnNameContext.class,0);
18546 		}
18547 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
18548 		public ExprContext expr() {
18549 			return getRuleContext(ExprContext.class,0);
18550 		}
18551 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
18552 		public ComputedColumnConstraintContext computedColumnConstraint() {
18553 			return getRuleContext(ComputedColumnConstraintContext.class,0);
18554 		}
18555 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
18556 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
18557 		public ComputedColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
18558 			super(parent, invokingState);
18559 		}
18560 		@Override public int getRuleIndex() { return RULE_computedColumnDefinition; }
18561 		@Override
18562 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18563 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnDefinition(this);
18564 			else return visitor.visitChildren(this);
18565 		}
18566 	}
18567 
18568 	public final ComputedColumnDefinitionContext computedColumnDefinition() throws RecognitionException {
18569 		ComputedColumnDefinitionContext _localctx = new ComputedColumnDefinitionContext(_ctx, getState());
18570 		enterRule(_localctx, 394, RULE_computedColumnDefinition);
18571 		int _la;
18572 		try {
18573 			enterOuterAlt(_localctx, 1);
18574 			{
18575 			setState(2791);
18576 			columnName();
18577 			setState(2792);
18578 			match(AS);
18579 			setState(2793);
18580 			expr(0);
18581 			setState(2799);
18582 			_errHandler.sync(this);
18583 			switch ( getInterpreter().adaptivePredict(_input,227,_ctx) ) {
18584 			case 1:
18585 				{
18586 				setState(2794);
18587 				match(PERSISTED);
18588 				setState(2797);
18589 				_errHandler.sync(this);
18590 				_la = _input.LA(1);
18591 				if (_la==NOT) {
18592 					{
18593 					setState(2795);
18594 					match(NOT);
18595 					setState(2796);
18596 					match(NULL);
18597 					}
18598 				}
18599 
18600 				}
18601 				break;
18602 			}
18603 			setState(2802);
18604 			_errHandler.sync(this);
18605 			switch ( getInterpreter().adaptivePredict(_input,228,_ctx) ) {
18606 			case 1:
18607 				{
18608 				setState(2801);
18609 				computedColumnConstraint();
18610 				}
18611 				break;
18612 			}
18613 			}
18614 		}
18615 		catch (RecognitionException re) {
18616 			_localctx.exception = re;
18617 			_errHandler.reportError(this, re);
18618 			_errHandler.recover(this, re);
18619 		}
18620 		finally {
18621 			exitRule();
18622 		}
18623 		return _localctx;
18624 	}
18625 
18626 	public static class ColumnSetDefinitionContext extends ParserRuleContext {
18627 		public IgnoredIdentifierContext ignoredIdentifier() {
18628 			return getRuleContext(IgnoredIdentifierContext.class,0);
18629 		}
18630 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
18631 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
18632 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18633 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
18634 		public ColumnSetDefinitionContext(ParserRuleContext parent, int invokingState) {
18635 			super(parent, invokingState);
18636 		}
18637 		@Override public int getRuleIndex() { return RULE_columnSetDefinition; }
18638 		@Override
18639 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18640 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnSetDefinition(this);
18641 			else return visitor.visitChildren(this);
18642 		}
18643 	}
18644 
18645 	public final ColumnSetDefinitionContext columnSetDefinition() throws RecognitionException {
18646 		ColumnSetDefinitionContext _localctx = new ColumnSetDefinitionContext(_ctx, getState());
18647 		enterRule(_localctx, 396, RULE_columnSetDefinition);
18648 		try {
18649 			enterOuterAlt(_localctx, 1);
18650 			{
18651 			setState(2804);
18652 			ignoredIdentifier();
18653 			setState(2805);
18654 			match(IDENTIFIER_);
18655 			setState(2806);
18656 			match(COLUMN_SET);
18657 			setState(2807);
18658 			match(FOR);
18659 			setState(2808);
18660 			match(ALL_SPARSE_COLUMNS);
18661 			}
18662 		}
18663 		catch (RecognitionException re) {
18664 			_localctx.exception = re;
18665 			_errHandler.reportError(this, re);
18666 			_errHandler.recover(this, re);
18667 		}
18668 		finally {
18669 			exitRule();
18670 		}
18671 		return _localctx;
18672 	}
18673 
18674 	public static class TableConstraintContext extends ParserRuleContext {
18675 		public TablePrimaryConstraintContext tablePrimaryConstraint() {
18676 			return getRuleContext(TablePrimaryConstraintContext.class,0);
18677 		}
18678 		public TableForeignKeyConstraintContext tableForeignKeyConstraint() {
18679 			return getRuleContext(TableForeignKeyConstraintContext.class,0);
18680 		}
18681 		public CheckConstraintContext checkConstraint() {
18682 			return getRuleContext(CheckConstraintContext.class,0);
18683 		}
18684 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
18685 		public ConstraintNameContext constraintName() {
18686 			return getRuleContext(ConstraintNameContext.class,0);
18687 		}
18688 		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
18689 			super(parent, invokingState);
18690 		}
18691 		@Override public int getRuleIndex() { return RULE_tableConstraint; }
18692 		@Override
18693 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18694 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableConstraint(this);
18695 			else return visitor.visitChildren(this);
18696 		}
18697 	}
18698 
18699 	public final TableConstraintContext tableConstraint() throws RecognitionException {
18700 		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
18701 		enterRule(_localctx, 398, RULE_tableConstraint);
18702 		int _la;
18703 		try {
18704 			enterOuterAlt(_localctx, 1);
18705 			{
18706 			setState(2812);
18707 			_errHandler.sync(this);
18708 			_la = _input.LA(1);
18709 			if (_la==CONSTRAINT) {
18710 				{
18711 				setState(2810);
18712 				match(CONSTRAINT);
18713 				setState(2811);
18714 				constraintName();
18715 				}
18716 			}
18717 
18718 			setState(2817);
18719 			_errHandler.sync(this);
18720 			switch (_input.LA(1)) {
18721 			case PRIMARY:
18722 			case UNIQUE:
18723 			case KEY:
18724 				{
18725 				setState(2814);
18726 				tablePrimaryConstraint();
18727 				}
18728 				break;
18729 			case LP_:
18730 			case FOREIGN:
18731 				{
18732 				setState(2815);
18733 				tableForeignKeyConstraint();
18734 				}
18735 				break;
18736 			case CHECK:
18737 				{
18738 				setState(2816);
18739 				checkConstraint();
18740 				}
18741 				break;
18742 			default:
18743 				throw new NoViableAltException(this);
18744 			}
18745 			}
18746 		}
18747 		catch (RecognitionException re) {
18748 			_localctx.exception = re;
18749 			_errHandler.reportError(this, re);
18750 			_errHandler.recover(this, re);
18751 		}
18752 		finally {
18753 			exitRule();
18754 		}
18755 		return _localctx;
18756 	}
18757 
18758 	public static class TablePrimaryConstraintContext extends ParserRuleContext {
18759 		public PrimaryKeyUniqueContext primaryKeyUnique() {
18760 			return getRuleContext(PrimaryKeyUniqueContext.class,0);
18761 		}
18762 		public DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() {
18763 			return getRuleContext(DiskTablePrimaryConstraintOptionContext.class,0);
18764 		}
18765 		public MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() {
18766 			return getRuleContext(MemoryTablePrimaryConstraintOptionContext.class,0);
18767 		}
18768 		public TablePrimaryConstraintContext(ParserRuleContext parent, int invokingState) {
18769 			super(parent, invokingState);
18770 		}
18771 		@Override public int getRuleIndex() { return RULE_tablePrimaryConstraint; }
18772 		@Override
18773 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18774 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTablePrimaryConstraint(this);
18775 			else return visitor.visitChildren(this);
18776 		}
18777 	}
18778 
18779 	public final TablePrimaryConstraintContext tablePrimaryConstraint() throws RecognitionException {
18780 		TablePrimaryConstraintContext _localctx = new TablePrimaryConstraintContext(_ctx, getState());
18781 		enterRule(_localctx, 400, RULE_tablePrimaryConstraint);
18782 		try {
18783 			enterOuterAlt(_localctx, 1);
18784 			{
18785 			setState(2819);
18786 			primaryKeyUnique();
18787 			setState(2822);
18788 			_errHandler.sync(this);
18789 			switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) {
18790 			case 1:
18791 				{
18792 				setState(2820);
18793 				diskTablePrimaryConstraintOption();
18794 				}
18795 				break;
18796 			case 2:
18797 				{
18798 				setState(2821);
18799 				memoryTablePrimaryConstraintOption();
18800 				}
18801 				break;
18802 			}
18803 			}
18804 		}
18805 		catch (RecognitionException re) {
18806 			_localctx.exception = re;
18807 			_errHandler.reportError(this, re);
18808 			_errHandler.recover(this, re);
18809 		}
18810 		finally {
18811 			exitRule();
18812 		}
18813 		return _localctx;
18814 	}
18815 
18816 	public static class PrimaryKeyUniqueContext extends ParserRuleContext {
18817 		public PrimaryKeyContext primaryKey() {
18818 			return getRuleContext(PrimaryKeyContext.class,0);
18819 		}
18820 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
18821 		public PrimaryKeyUniqueContext(ParserRuleContext parent, int invokingState) {
18822 			super(parent, invokingState);
18823 		}
18824 		@Override public int getRuleIndex() { return RULE_primaryKeyUnique; }
18825 		@Override
18826 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18827 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyUnique(this);
18828 			else return visitor.visitChildren(this);
18829 		}
18830 	}
18831 
18832 	public final PrimaryKeyUniqueContext primaryKeyUnique() throws RecognitionException {
18833 		PrimaryKeyUniqueContext _localctx = new PrimaryKeyUniqueContext(_ctx, getState());
18834 		enterRule(_localctx, 402, RULE_primaryKeyUnique);
18835 		try {
18836 			setState(2826);
18837 			_errHandler.sync(this);
18838 			switch (_input.LA(1)) {
18839 			case PRIMARY:
18840 			case KEY:
18841 				enterOuterAlt(_localctx, 1);
18842 				{
18843 				setState(2824);
18844 				primaryKey();
18845 				}
18846 				break;
18847 			case UNIQUE:
18848 				enterOuterAlt(_localctx, 2);
18849 				{
18850 				setState(2825);
18851 				match(UNIQUE);
18852 				}
18853 				break;
18854 			default:
18855 				throw new NoViableAltException(this);
18856 			}
18857 		}
18858 		catch (RecognitionException re) {
18859 			_localctx.exception = re;
18860 			_errHandler.reportError(this, re);
18861 			_errHandler.recover(this, re);
18862 		}
18863 		finally {
18864 			exitRule();
18865 		}
18866 		return _localctx;
18867 	}
18868 
18869 	public static class DiskTablePrimaryConstraintOptionContext extends ParserRuleContext {
18870 		public ColumnNamesContext columnNames() {
18871 			return getRuleContext(ColumnNamesContext.class,0);
18872 		}
18873 		public ClusterOptionContext clusterOption() {
18874 			return getRuleContext(ClusterOptionContext.class,0);
18875 		}
18876 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
18877 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
18878 		}
18879 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
18880 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
18881 		}
18882 		public DiskTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
18883 			super(parent, invokingState);
18884 		}
18885 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryConstraintOption; }
18886 		@Override
18887 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18888 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryConstraintOption(this);
18889 			else return visitor.visitChildren(this);
18890 		}
18891 	}
18892 
18893 	public final DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() throws RecognitionException {
18894 		DiskTablePrimaryConstraintOptionContext _localctx = new DiskTablePrimaryConstraintOptionContext(_ctx, getState());
18895 		enterRule(_localctx, 404, RULE_diskTablePrimaryConstraintOption);
18896 		int _la;
18897 		try {
18898 			enterOuterAlt(_localctx, 1);
18899 			{
18900 			setState(2829);
18901 			_errHandler.sync(this);
18902 			_la = _input.LA(1);
18903 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
18904 				{
18905 				setState(2828);
18906 				clusterOption();
18907 				}
18908 			}
18909 
18910 			setState(2831);
18911 			columnNames();
18912 			setState(2833);
18913 			_errHandler.sync(this);
18914 			switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) {
18915 			case 1:
18916 				{
18917 				setState(2832);
18918 				primaryKeyWithClause();
18919 				}
18920 				break;
18921 			}
18922 			setState(2836);
18923 			_errHandler.sync(this);
18924 			_la = _input.LA(1);
18925 			if (_la==ON) {
18926 				{
18927 				setState(2835);
18928 				primaryKeyOnClause();
18929 				}
18930 			}
18931 
18932 			}
18933 		}
18934 		catch (RecognitionException re) {
18935 			_localctx.exception = re;
18936 			_errHandler.reportError(this, re);
18937 			_errHandler.recover(this, re);
18938 		}
18939 		finally {
18940 			exitRule();
18941 		}
18942 		return _localctx;
18943 	}
18944 
18945 	public static class MemoryTablePrimaryConstraintOptionContext extends ParserRuleContext {
18946 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
18947 		public ColumnNamesContext columnNames() {
18948 			return getRuleContext(ColumnNamesContext.class,0);
18949 		}
18950 		public HashWithBucketContext hashWithBucket() {
18951 			return getRuleContext(HashWithBucketContext.class,0);
18952 		}
18953 		public MemoryTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
18954 			super(parent, invokingState);
18955 		}
18956 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryConstraintOption; }
18957 		@Override
18958 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18959 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryConstraintOption(this);
18960 			else return visitor.visitChildren(this);
18961 		}
18962 	}
18963 
18964 	public final MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() throws RecognitionException {
18965 		MemoryTablePrimaryConstraintOptionContext _localctx = new MemoryTablePrimaryConstraintOptionContext(_ctx, getState());
18966 		enterRule(_localctx, 406, RULE_memoryTablePrimaryConstraintOption);
18967 		try {
18968 			enterOuterAlt(_localctx, 1);
18969 			{
18970 			setState(2838);
18971 			match(NONCLUSTERED);
18972 			setState(2841);
18973 			_errHandler.sync(this);
18974 			switch (_input.LA(1)) {
18975 			case LP_:
18976 				{
18977 				setState(2839);
18978 				columnNames();
18979 				}
18980 				break;
18981 			case HASH:
18982 				{
18983 				setState(2840);
18984 				hashWithBucket();
18985 				}
18986 				break;
18987 			default:
18988 				throw new NoViableAltException(this);
18989 			}
18990 			}
18991 		}
18992 		catch (RecognitionException re) {
18993 			_localctx.exception = re;
18994 			_errHandler.reportError(this, re);
18995 			_errHandler.recover(this, re);
18996 		}
18997 		finally {
18998 			exitRule();
18999 		}
19000 		return _localctx;
19001 	}
19002 
19003 	public static class HashWithBucketContext extends ParserRuleContext {
19004 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
19005 		public ColumnNamesContext columnNames() {
19006 			return getRuleContext(ColumnNamesContext.class,0);
19007 		}
19008 		public WithBucketContext withBucket() {
19009 			return getRuleContext(WithBucketContext.class,0);
19010 		}
19011 		public HashWithBucketContext(ParserRuleContext parent, int invokingState) {
19012 			super(parent, invokingState);
19013 		}
19014 		@Override public int getRuleIndex() { return RULE_hashWithBucket; }
19015 		@Override
19016 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19017 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashWithBucket(this);
19018 			else return visitor.visitChildren(this);
19019 		}
19020 	}
19021 
19022 	public final HashWithBucketContext hashWithBucket() throws RecognitionException {
19023 		HashWithBucketContext _localctx = new HashWithBucketContext(_ctx, getState());
19024 		enterRule(_localctx, 408, RULE_hashWithBucket);
19025 		try {
19026 			enterOuterAlt(_localctx, 1);
19027 			{
19028 			setState(2843);
19029 			match(HASH);
19030 			setState(2844);
19031 			columnNames();
19032 			setState(2845);
19033 			withBucket();
19034 			}
19035 		}
19036 		catch (RecognitionException re) {
19037 			_localctx.exception = re;
19038 			_errHandler.reportError(this, re);
19039 			_errHandler.recover(this, re);
19040 		}
19041 		finally {
19042 			exitRule();
19043 		}
19044 		return _localctx;
19045 	}
19046 
19047 	public static class TableForeignKeyConstraintContext extends ParserRuleContext {
19048 		public List<ColumnNamesContext> columnNames() {
19049 			return getRuleContexts(ColumnNamesContext.class);
19050 		}
19051 		public ColumnNamesContext columnNames(int i) {
19052 			return getRuleContext(ColumnNamesContext.class,i);
19053 		}
19054 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
19055 		public TableNameContext tableName() {
19056 			return getRuleContext(TableNameContext.class,0);
19057 		}
19058 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
19059 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
19060 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
19061 			return getRuleContexts(ForeignKeyOnActionContext.class);
19062 		}
19063 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
19064 			return getRuleContext(ForeignKeyOnActionContext.class,i);
19065 		}
19066 		public TableForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
19067 			super(parent, invokingState);
19068 		}
19069 		@Override public int getRuleIndex() { return RULE_tableForeignKeyConstraint; }
19070 		@Override
19071 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19072 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableForeignKeyConstraint(this);
19073 			else return visitor.visitChildren(this);
19074 		}
19075 	}
19076 
19077 	public final TableForeignKeyConstraintContext tableForeignKeyConstraint() throws RecognitionException {
19078 		TableForeignKeyConstraintContext _localctx = new TableForeignKeyConstraintContext(_ctx, getState());
19079 		enterRule(_localctx, 410, RULE_tableForeignKeyConstraint);
19080 		int _la;
19081 		try {
19082 			enterOuterAlt(_localctx, 1);
19083 			{
19084 			setState(2849);
19085 			_errHandler.sync(this);
19086 			_la = _input.LA(1);
19087 			if (_la==FOREIGN) {
19088 				{
19089 				setState(2847);
19090 				match(FOREIGN);
19091 				setState(2848);
19092 				match(KEY);
19093 				}
19094 			}
19095 
19096 			setState(2851);
19097 			columnNames();
19098 			setState(2852);
19099 			match(REFERENCES);
19100 			setState(2853);
19101 			tableName();
19102 			setState(2854);
19103 			columnNames();
19104 			setState(2858);
19105 			_errHandler.sync(this);
19106 			_la = _input.LA(1);
19107 			while (_la==ON || _la==NOT) {
19108 				{
19109 				{
19110 				setState(2855);
19111 				foreignKeyOnAction();
19112 				}
19113 				}
19114 				setState(2860);
19115 				_errHandler.sync(this);
19116 				_la = _input.LA(1);
19117 			}
19118 			}
19119 		}
19120 		catch (RecognitionException re) {
19121 			_localctx.exception = re;
19122 			_errHandler.reportError(this, re);
19123 			_errHandler.recover(this, re);
19124 		}
19125 		finally {
19126 			exitRule();
19127 		}
19128 		return _localctx;
19129 	}
19130 
19131 	public static class TableIndexContext extends ParserRuleContext {
19132 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
19133 		public IndexNameContext indexName() {
19134 			return getRuleContext(IndexNameContext.class,0);
19135 		}
19136 		public IndexNameOptionContext indexNameOption() {
19137 			return getRuleContext(IndexNameOptionContext.class,0);
19138 		}
19139 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
19140 		public IndexOptionsContext indexOptions() {
19141 			return getRuleContext(IndexOptionsContext.class,0);
19142 		}
19143 		public IndexOnClauseContext indexOnClause() {
19144 			return getRuleContext(IndexOnClauseContext.class,0);
19145 		}
19146 		public FileStreamOnContext fileStreamOn() {
19147 			return getRuleContext(FileStreamOnContext.class,0);
19148 		}
19149 		public TableIndexContext(ParserRuleContext parent, int invokingState) {
19150 			super(parent, invokingState);
19151 		}
19152 		@Override public int getRuleIndex() { return RULE_tableIndex; }
19153 		@Override
19154 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19155 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableIndex(this);
19156 			else return visitor.visitChildren(this);
19157 		}
19158 	}
19159 
19160 	public final TableIndexContext tableIndex() throws RecognitionException {
19161 		TableIndexContext _localctx = new TableIndexContext(_ctx, getState());
19162 		enterRule(_localctx, 412, RULE_tableIndex);
19163 		int _la;
19164 		try {
19165 			enterOuterAlt(_localctx, 1);
19166 			{
19167 			setState(2861);
19168 			match(INDEX);
19169 			setState(2862);
19170 			indexName();
19171 			setState(2863);
19172 			indexNameOption();
19173 			setState(2866);
19174 			_errHandler.sync(this);
19175 			_la = _input.LA(1);
19176 			if (_la==WITH) {
19177 				{
19178 				setState(2864);
19179 				match(WITH);
19180 				setState(2865);
19181 				indexOptions();
19182 				}
19183 			}
19184 
19185 			setState(2869);
19186 			_errHandler.sync(this);
19187 			_la = _input.LA(1);
19188 			if (_la==ON) {
19189 				{
19190 				setState(2868);
19191 				indexOnClause();
19192 				}
19193 			}
19194 
19195 			setState(2872);
19196 			_errHandler.sync(this);
19197 			_la = _input.LA(1);
19198 			if (_la==FILESTREAM_ON) {
19199 				{
19200 				setState(2871);
19201 				fileStreamOn();
19202 				}
19203 			}
19204 
19205 			}
19206 		}
19207 		catch (RecognitionException re) {
19208 			_localctx.exception = re;
19209 			_errHandler.reportError(this, re);
19210 			_errHandler.recover(this, re);
19211 		}
19212 		finally {
19213 			exitRule();
19214 		}
19215 		return _localctx;
19216 	}
19217 
19218 	public static class IndexNameOptionContext extends ParserRuleContext {
19219 		public ColumnNamesContext columnNames() {
19220 			return getRuleContext(ColumnNamesContext.class,0);
19221 		}
19222 		public ClusterOptionContext clusterOption() {
19223 			return getRuleContext(ClusterOptionContext.class,0);
19224 		}
19225 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
19226 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
19227 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
19228 		public IndexNameOptionContext(ParserRuleContext parent, int invokingState) {
19229 			super(parent, invokingState);
19230 		}
19231 		@Override public int getRuleIndex() { return RULE_indexNameOption; }
19232 		@Override
19233 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19234 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNameOption(this);
19235 			else return visitor.visitChildren(this);
19236 		}
19237 	}
19238 
19239 	public final IndexNameOptionContext indexNameOption() throws RecognitionException {
19240 		IndexNameOptionContext _localctx = new IndexNameOptionContext(_ctx, getState());
19241 		enterRule(_localctx, 414, RULE_indexNameOption);
19242 		int _la;
19243 		try {
19244 			setState(2885);
19245 			_errHandler.sync(this);
19246 			switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) {
19247 			case 1:
19248 				enterOuterAlt(_localctx, 1);
19249 				{
19250 				setState(2875);
19251 				_errHandler.sync(this);
19252 				_la = _input.LA(1);
19253 				if (_la==CLUSTERED || _la==NONCLUSTERED) {
19254 					{
19255 					setState(2874);
19256 					clusterOption();
19257 					}
19258 				}
19259 
19260 				setState(2877);
19261 				columnNames();
19262 				}
19263 				break;
19264 			case 2:
19265 				enterOuterAlt(_localctx, 2);
19266 				{
19267 				setState(2878);
19268 				match(CLUSTERED);
19269 				setState(2879);
19270 				match(COLUMNSTORE);
19271 				}
19272 				break;
19273 			case 3:
19274 				enterOuterAlt(_localctx, 3);
19275 				{
19276 				setState(2881);
19277 				_errHandler.sync(this);
19278 				_la = _input.LA(1);
19279 				if (_la==NONCLUSTERED) {
19280 					{
19281 					setState(2880);
19282 					match(NONCLUSTERED);
19283 					}
19284 				}
19285 
19286 				setState(2883);
19287 				match(COLUMNSTORE);
19288 				setState(2884);
19289 				columnNames();
19290 				}
19291 				break;
19292 			}
19293 		}
19294 		catch (RecognitionException re) {
19295 			_localctx.exception = re;
19296 			_errHandler.reportError(this, re);
19297 			_errHandler.recover(this, re);
19298 		}
19299 		finally {
19300 			exitRule();
19301 		}
19302 		return _localctx;
19303 	}
19304 
19305 	public static class IndexOptionsContext extends ParserRuleContext {
19306 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19307 		public List<IndexOptionContext> indexOption() {
19308 			return getRuleContexts(IndexOptionContext.class);
19309 		}
19310 		public IndexOptionContext indexOption(int i) {
19311 			return getRuleContext(IndexOptionContext.class,i);
19312 		}
19313 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19314 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19315 		public TerminalNode COMMA_(int i) {
19316 			return getToken(SQLServerStatementParser.COMMA_, i);
19317 		}
19318 		public IndexOptionsContext(ParserRuleContext parent, int invokingState) {
19319 			super(parent, invokingState);
19320 		}
19321 		@Override public int getRuleIndex() { return RULE_indexOptions; }
19322 		@Override
19323 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19324 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOptions(this);
19325 			else return visitor.visitChildren(this);
19326 		}
19327 	}
19328 
19329 	public final IndexOptionsContext indexOptions() throws RecognitionException {
19330 		IndexOptionsContext _localctx = new IndexOptionsContext(_ctx, getState());
19331 		enterRule(_localctx, 416, RULE_indexOptions);
19332 		int _la;
19333 		try {
19334 			enterOuterAlt(_localctx, 1);
19335 			{
19336 			setState(2887);
19337 			match(LP_);
19338 			setState(2888);
19339 			indexOption();
19340 			setState(2893);
19341 			_errHandler.sync(this);
19342 			_la = _input.LA(1);
19343 			while (_la==COMMA_) {
19344 				{
19345 				{
19346 				setState(2889);
19347 				match(COMMA_);
19348 				setState(2890);
19349 				indexOption();
19350 				}
19351 				}
19352 				setState(2895);
19353 				_errHandler.sync(this);
19354 				_la = _input.LA(1);
19355 			}
19356 			setState(2896);
19357 			match(RP_);
19358 			}
19359 		}
19360 		catch (RecognitionException re) {
19361 			_localctx.exception = re;
19362 			_errHandler.reportError(this, re);
19363 			_errHandler.recover(this, re);
19364 		}
19365 		finally {
19366 			exitRule();
19367 		}
19368 		return _localctx;
19369 	}
19370 
19371 	public static class PeriodClauseContext extends ParserRuleContext {
19372 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
19373 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
19374 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
19375 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19376 		public List<ColumnNameContext> columnName() {
19377 			return getRuleContexts(ColumnNameContext.class);
19378 		}
19379 		public ColumnNameContext columnName(int i) {
19380 			return getRuleContext(ColumnNameContext.class,i);
19381 		}
19382 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
19383 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19384 		public PeriodClauseContext(ParserRuleContext parent, int invokingState) {
19385 			super(parent, invokingState);
19386 		}
19387 		@Override public int getRuleIndex() { return RULE_periodClause; }
19388 		@Override
19389 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19390 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPeriodClause(this);
19391 			else return visitor.visitChildren(this);
19392 		}
19393 	}
19394 
19395 	public final PeriodClauseContext periodClause() throws RecognitionException {
19396 		PeriodClauseContext _localctx = new PeriodClauseContext(_ctx, getState());
19397 		enterRule(_localctx, 418, RULE_periodClause);
19398 		try {
19399 			enterOuterAlt(_localctx, 1);
19400 			{
19401 			setState(2898);
19402 			match(PERIOD);
19403 			setState(2899);
19404 			match(FOR);
19405 			setState(2900);
19406 			match(SYSTEM_TIME);
19407 			setState(2901);
19408 			match(LP_);
19409 			setState(2902);
19410 			columnName();
19411 			setState(2903);
19412 			match(COMMA_);
19413 			setState(2904);
19414 			columnName();
19415 			setState(2905);
19416 			match(RP_);
19417 			}
19418 		}
19419 		catch (RecognitionException re) {
19420 			_localctx.exception = re;
19421 			_errHandler.reportError(this, re);
19422 			_errHandler.recover(this, re);
19423 		}
19424 		finally {
19425 			exitRule();
19426 		}
19427 		return _localctx;
19428 	}
19429 
19430 	public static class PartitionSchemeContext extends ParserRuleContext {
19431 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19432 		public SchemaNameContext schemaName() {
19433 			return getRuleContext(SchemaNameContext.class,0);
19434 		}
19435 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19436 		public ColumnNameContext columnName() {
19437 			return getRuleContext(ColumnNameContext.class,0);
19438 		}
19439 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19440 		public IgnoredIdentifierContext ignoredIdentifier() {
19441 			return getRuleContext(IgnoredIdentifierContext.class,0);
19442 		}
19443 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
19444 		public PartitionSchemeContext(ParserRuleContext parent, int invokingState) {
19445 			super(parent, invokingState);
19446 		}
19447 		@Override public int getRuleIndex() { return RULE_partitionScheme; }
19448 		@Override
19449 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19450 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionScheme(this);
19451 			else return visitor.visitChildren(this);
19452 		}
19453 	}
19454 
19455 	public final PartitionSchemeContext partitionScheme() throws RecognitionException {
19456 		PartitionSchemeContext _localctx = new PartitionSchemeContext(_ctx, getState());
19457 		enterRule(_localctx, 420, RULE_partitionScheme);
19458 		int _la;
19459 		try {
19460 			enterOuterAlt(_localctx, 1);
19461 			{
19462 			setState(2917);
19463 			_errHandler.sync(this);
19464 			_la = _input.LA(1);
19465 			if (_la==ON) {
19466 				{
19467 				setState(2907);
19468 				match(ON);
19469 				setState(2915);
19470 				_errHandler.sync(this);
19471 				switch ( getInterpreter().adaptivePredict(_input,246,_ctx) ) {
19472 				case 1:
19473 					{
19474 					setState(2908);
19475 					schemaName();
19476 					setState(2909);
19477 					match(LP_);
19478 					setState(2910);
19479 					columnName();
19480 					setState(2911);
19481 					match(RP_);
19482 					}
19483 					break;
19484 				case 2:
19485 					{
19486 					setState(2913);
19487 					ignoredIdentifier();
19488 					}
19489 					break;
19490 				case 3:
19491 					{
19492 					setState(2914);
19493 					match(STRING_);
19494 					}
19495 					break;
19496 				}
19497 				}
19498 			}
19499 
19500 			}
19501 		}
19502 		catch (RecognitionException re) {
19503 			_localctx.exception = re;
19504 			_errHandler.reportError(this, re);
19505 			_errHandler.recover(this, re);
19506 		}
19507 		finally {
19508 			exitRule();
19509 		}
19510 		return _localctx;
19511 	}
19512 
19513 	public static class FileGroupContext extends ParserRuleContext {
19514 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
19515 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
19516 		public TableOptionsContext tableOptions() {
19517 			return getRuleContext(TableOptionsContext.class,0);
19518 		}
19519 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
19520 			return getRuleContexts(IgnoredIdentifierContext.class);
19521 		}
19522 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
19523 			return getRuleContext(IgnoredIdentifierContext.class,i);
19524 		}
19525 		public List<TerminalNode> STRING_() { return getTokens(SQLServerStatementParser.STRING_); }
19526 		public TerminalNode STRING_(int i) {
19527 			return getToken(SQLServerStatementParser.STRING_, i);
19528 		}
19529 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
19530 		public SchemaNameContext schemaName() {
19531 			return getRuleContext(SchemaNameContext.class,0);
19532 		}
19533 		public FileGroupContext(ParserRuleContext parent, int invokingState) {
19534 			super(parent, invokingState);
19535 		}
19536 		@Override public int getRuleIndex() { return RULE_fileGroup; }
19537 		@Override
19538 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19539 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileGroup(this);
19540 			else return visitor.visitChildren(this);
19541 		}
19542 	}
19543 
19544 	public final FileGroupContext fileGroup() throws RecognitionException {
19545 		FileGroupContext _localctx = new FileGroupContext(_ctx, getState());
19546 		enterRule(_localctx, 422, RULE_fileGroup);
19547 		int _la;
19548 		try {
19549 			enterOuterAlt(_localctx, 1);
19550 			{
19551 			setState(2924);
19552 			_errHandler.sync(this);
19553 			_la = _input.LA(1);
19554 			if (_la==TEXTIMAGE_ON) {
19555 				{
19556 				setState(2919);
19557 				match(TEXTIMAGE_ON);
19558 				setState(2922);
19559 				_errHandler.sync(this);
19560 				switch (_input.LA(1)) {
19561 				case IDENTIFIER_:
19562 					{
19563 					setState(2920);
19564 					ignoredIdentifier();
19565 					}
19566 					break;
19567 				case STRING_:
19568 					{
19569 					setState(2921);
19570 					match(STRING_);
19571 					}
19572 					break;
19573 				default:
19574 					throw new NoViableAltException(this);
19575 				}
19576 				}
19577 			}
19578 
19579 			setState(2933);
19580 			_errHandler.sync(this);
19581 			_la = _input.LA(1);
19582 			if (_la==FILESTREAM_ON || _la==IDENTIFIER_) {
19583 				{
19584 				setState(2931);
19585 				_errHandler.sync(this);
19586 				switch (_input.LA(1)) {
19587 				case FILESTREAM_ON:
19588 					{
19589 					setState(2926);
19590 					match(FILESTREAM_ON);
19591 					{
19592 					setState(2927);
19593 					schemaName();
19594 					}
19595 					}
19596 					break;
19597 				case IDENTIFIER_:
19598 					{
19599 					setState(2928);
19600 					ignoredIdentifier();
19601 					setState(2929);
19602 					match(STRING_);
19603 					}
19604 					break;
19605 				default:
19606 					throw new NoViableAltException(this);
19607 				}
19608 				}
19609 			}
19610 
19611 			setState(2937);
19612 			_errHandler.sync(this);
19613 			switch ( getInterpreter().adaptivePredict(_input,252,_ctx) ) {
19614 			case 1:
19615 				{
19616 				setState(2935);
19617 				match(WITH);
19618 				setState(2936);
19619 				tableOptions();
19620 				}
19621 				break;
19622 			}
19623 			}
19624 		}
19625 		catch (RecognitionException re) {
19626 			_localctx.exception = re;
19627 			_errHandler.reportError(this, re);
19628 			_errHandler.recover(this, re);
19629 		}
19630 		finally {
19631 			exitRule();
19632 		}
19633 		return _localctx;
19634 	}
19635 
19636 	public static class TableOptionsContext extends ParserRuleContext {
19637 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19638 		public List<TableOptionContext> tableOption() {
19639 			return getRuleContexts(TableOptionContext.class);
19640 		}
19641 		public TableOptionContext tableOption(int i) {
19642 			return getRuleContext(TableOptionContext.class,i);
19643 		}
19644 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19645 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19646 		public TerminalNode COMMA_(int i) {
19647 			return getToken(SQLServerStatementParser.COMMA_, i);
19648 		}
19649 		public TableOptionsContext(ParserRuleContext parent, int invokingState) {
19650 			super(parent, invokingState);
19651 		}
19652 		@Override public int getRuleIndex() { return RULE_tableOptions; }
19653 		@Override
19654 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19655 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOptions(this);
19656 			else return visitor.visitChildren(this);
19657 		}
19658 	}
19659 
19660 	public final TableOptionsContext tableOptions() throws RecognitionException {
19661 		TableOptionsContext _localctx = new TableOptionsContext(_ctx, getState());
19662 		enterRule(_localctx, 424, RULE_tableOptions);
19663 		int _la;
19664 		try {
19665 			enterOuterAlt(_localctx, 1);
19666 			{
19667 			setState(2939);
19668 			match(LP_);
19669 			setState(2940);
19670 			tableOption();
19671 			setState(2945);
19672 			_errHandler.sync(this);
19673 			_la = _input.LA(1);
19674 			while (_la==COMMA_) {
19675 				{
19676 				{
19677 				setState(2941);
19678 				match(COMMA_);
19679 				setState(2942);
19680 				tableOption();
19681 				}
19682 				}
19683 				setState(2947);
19684 				_errHandler.sync(this);
19685 				_la = _input.LA(1);
19686 			}
19687 			setState(2948);
19688 			match(RP_);
19689 			}
19690 		}
19691 		catch (RecognitionException re) {
19692 			_localctx.exception = re;
19693 			_errHandler.reportError(this, re);
19694 			_errHandler.recover(this, re);
19695 		}
19696 		finally {
19697 			exitRule();
19698 		}
19699 		return _localctx;
19700 	}
19701 
19702 	public static class TableOptionContext extends ParserRuleContext {
19703 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
19704 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19705 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
19706 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
19707 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
19708 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19709 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
19710 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19711 		public PartitionExpressionsContext partitionExpressions() {
19712 			return getRuleContext(PartitionExpressionsContext.class,0);
19713 		}
19714 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19715 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
19716 		public IgnoredIdentifierContext ignoredIdentifier() {
19717 			return getRuleContext(IgnoredIdentifierContext.class,0);
19718 		}
19719 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
19720 		public CollationNameContext collationName() {
19721 			return getRuleContext(CollationNameContext.class,0);
19722 		}
19723 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
19724 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
19725 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
19726 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
19727 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
19728 		public OnHistoryTableClauseContext onHistoryTableClause() {
19729 			return getRuleContext(OnHistoryTableClauseContext.class,0);
19730 		}
19731 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
19732 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
19733 		public MigrationState_Context migrationState_() {
19734 			return getRuleContext(MigrationState_Context.class,0);
19735 		}
19736 		public TableStretchOptionsContext tableStretchOptions() {
19737 			return getRuleContext(TableStretchOptionsContext.class,0);
19738 		}
19739 		public TableOperationOptionContext tableOperationOption() {
19740 			return getRuleContext(TableOperationOptionContext.class,0);
19741 		}
19742 		public DistributionOptionContext distributionOption() {
19743 			return getRuleContext(DistributionOptionContext.class,0);
19744 		}
19745 		public DataWareHouseTableOptionContext dataWareHouseTableOption() {
19746 			return getRuleContext(DataWareHouseTableOptionContext.class,0);
19747 		}
19748 		public DataDelectionOptionContext dataDelectionOption() {
19749 			return getRuleContext(DataDelectionOptionContext.class,0);
19750 		}
19751 		public DataWareHousePartitionOptionContext dataWareHousePartitionOption() {
19752 			return getRuleContext(DataWareHousePartitionOptionContext.class,0);
19753 		}
19754 		public TableOptionContext(ParserRuleContext parent, int invokingState) {
19755 			super(parent, invokingState);
19756 		}
19757 		@Override public int getRuleIndex() { return RULE_tableOption; }
19758 		@Override
19759 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19760 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOption(this);
19761 			else return visitor.visitChildren(this);
19762 		}
19763 	}
19764 
19765 	public final TableOptionContext tableOption() throws RecognitionException {
19766 		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
19767 		enterRule(_localctx, 426, RULE_tableOption);
19768 		int _la;
19769 		try {
19770 			setState(3000);
19771 			_errHandler.sync(this);
19772 			switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) {
19773 			case 1:
19774 				enterOuterAlt(_localctx, 1);
19775 				{
19776 				setState(2950);
19777 				match(DATA_COMPRESSION);
19778 				setState(2951);
19779 				match(EQ_);
19780 				setState(2952);
19781 				_la = _input.LA(1);
19782 				if ( !(((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (NONE - 248)) | (1L << (PAGE - 248)))) != 0)) ) {
19783 				_errHandler.recoverInline(this);
19784 				}
19785 				else {
19786 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19787 					_errHandler.reportMatch(this);
19788 					consume();
19789 				}
19790 				setState(2959);
19791 				_errHandler.sync(this);
19792 				_la = _input.LA(1);
19793 				if (_la==ON) {
19794 					{
19795 					setState(2953);
19796 					match(ON);
19797 					setState(2954);
19798 					match(PARTITIONS);
19799 					setState(2955);
19800 					match(LP_);
19801 					setState(2956);
19802 					partitionExpressions();
19803 					setState(2957);
19804 					match(RP_);
19805 					}
19806 				}
19807 
19808 				}
19809 				break;
19810 			case 2:
19811 				enterOuterAlt(_localctx, 2);
19812 				{
19813 				setState(2961);
19814 				match(FILETABLE_DIRECTORY);
19815 				setState(2962);
19816 				match(EQ_);
19817 				setState(2963);
19818 				ignoredIdentifier();
19819 				}
19820 				break;
19821 			case 3:
19822 				enterOuterAlt(_localctx, 3);
19823 				{
19824 				setState(2964);
19825 				match(FILETABLE_COLLATE_FILENAME);
19826 				setState(2965);
19827 				match(EQ_);
19828 				setState(2968);
19829 				_errHandler.sync(this);
19830 				switch (_input.LA(1)) {
19831 				case IDENTIFIER_:
19832 				case STRING_:
19833 					{
19834 					setState(2966);
19835 					collationName();
19836 					}
19837 					break;
19838 				case DATABASE_DEAULT:
19839 					{
19840 					setState(2967);
19841 					match(DATABASE_DEAULT);
19842 					}
19843 					break;
19844 				default:
19845 					throw new NoViableAltException(this);
19846 				}
19847 				}
19848 				break;
19849 			case 4:
19850 				enterOuterAlt(_localctx, 4);
19851 				{
19852 				setState(2970);
19853 				match(FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME);
19854 				setState(2971);
19855 				match(EQ_);
19856 				setState(2972);
19857 				ignoredIdentifier();
19858 				}
19859 				break;
19860 			case 5:
19861 				enterOuterAlt(_localctx, 5);
19862 				{
19863 				setState(2973);
19864 				match(FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME);
19865 				setState(2974);
19866 				match(EQ_);
19867 				setState(2975);
19868 				ignoredIdentifier();
19869 				}
19870 				break;
19871 			case 6:
19872 				enterOuterAlt(_localctx, 6);
19873 				{
19874 				setState(2976);
19875 				match(FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME);
19876 				setState(2977);
19877 				match(EQ_);
19878 				setState(2978);
19879 				ignoredIdentifier();
19880 				}
19881 				break;
19882 			case 7:
19883 				enterOuterAlt(_localctx, 7);
19884 				{
19885 				setState(2979);
19886 				match(SYSTEM_VERSIONING);
19887 				setState(2980);
19888 				match(EQ_);
19889 				setState(2981);
19890 				match(ON);
19891 				setState(2983);
19892 				_errHandler.sync(this);
19893 				_la = _input.LA(1);
19894 				if (_la==LP_) {
19895 					{
19896 					setState(2982);
19897 					onHistoryTableClause();
19898 					}
19899 				}
19900 
19901 				}
19902 				break;
19903 			case 8:
19904 				enterOuterAlt(_localctx, 8);
19905 				{
19906 				setState(2985);
19907 				match(REMOTE_DATA_ARCHIVE);
19908 				setState(2986);
19909 				match(EQ_);
19910 				setState(2993);
19911 				_errHandler.sync(this);
19912 				switch (_input.LA(1)) {
19913 				case ON:
19914 					{
19915 					setState(2987);
19916 					match(ON);
19917 					setState(2989);
19918 					_errHandler.sync(this);
19919 					_la = _input.LA(1);
19920 					if (_la==LP_) {
19921 						{
19922 						setState(2988);
19923 						tableStretchOptions();
19924 						}
19925 					}
19926 
19927 					}
19928 					break;
19929 				case OFF:
19930 					{
19931 					setState(2991);
19932 					match(OFF);
19933 					setState(2992);
19934 					migrationState_();
19935 					}
19936 					break;
19937 				default:
19938 					throw new NoViableAltException(this);
19939 				}
19940 				}
19941 				break;
19942 			case 9:
19943 				enterOuterAlt(_localctx, 9);
19944 				{
19945 				setState(2995);
19946 				tableOperationOption();
19947 				}
19948 				break;
19949 			case 10:
19950 				enterOuterAlt(_localctx, 10);
19951 				{
19952 				setState(2996);
19953 				distributionOption();
19954 				}
19955 				break;
19956 			case 11:
19957 				enterOuterAlt(_localctx, 11);
19958 				{
19959 				setState(2997);
19960 				dataWareHouseTableOption();
19961 				}
19962 				break;
19963 			case 12:
19964 				enterOuterAlt(_localctx, 12);
19965 				{
19966 				setState(2998);
19967 				dataDelectionOption();
19968 				}
19969 				break;
19970 			case 13:
19971 				enterOuterAlt(_localctx, 13);
19972 				{
19973 				setState(2999);
19974 				dataWareHousePartitionOption();
19975 				}
19976 				break;
19977 			}
19978 		}
19979 		catch (RecognitionException re) {
19980 			_localctx.exception = re;
19981 			_errHandler.reportError(this, re);
19982 			_errHandler.recover(this, re);
19983 		}
19984 		finally {
19985 			exitRule();
19986 		}
19987 		return _localctx;
19988 	}
19989 
19990 	public static class DataDelectionOptionContext extends ParserRuleContext {
19991 		public TerminalNode DATA_DELETION() { return getToken(SQLServerStatementParser.DATA_DELETION, 0); }
19992 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
19993 		public TerminalNode EQ_(int i) {
19994 			return getToken(SQLServerStatementParser.EQ_, i);
19995 		}
19996 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19997 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19998 		public TerminalNode FILTER_COLUMN() { return getToken(SQLServerStatementParser.FILTER_COLUMN, 0); }
19999 		public ColumnNameContext columnName() {
20000 			return getRuleContext(ColumnNameContext.class,0);
20001 		}
20002 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
20003 		public TerminalNode RETENTION_PERIOD() { return getToken(SQLServerStatementParser.RETENTION_PERIOD, 0); }
20004 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
20005 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
20006 		}
20007 		public DataDelectionOptionContext(ParserRuleContext parent, int invokingState) {
20008 			super(parent, invokingState);
20009 		}
20010 		@Override public int getRuleIndex() { return RULE_dataDelectionOption; }
20011 		@Override
20012 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20013 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataDelectionOption(this);
20014 			else return visitor.visitChildren(this);
20015 		}
20016 	}
20017 
20018 	public final DataDelectionOptionContext dataDelectionOption() throws RecognitionException {
20019 		DataDelectionOptionContext _localctx = new DataDelectionOptionContext(_ctx, getState());
20020 		enterRule(_localctx, 428, RULE_dataDelectionOption);
20021 		try {
20022 			enterOuterAlt(_localctx, 1);
20023 			{
20024 			setState(3002);
20025 			match(DATA_DELETION);
20026 			setState(3003);
20027 			match(EQ_);
20028 			setState(3004);
20029 			match(ON);
20030 			{
20031 			setState(3005);
20032 			match(LP_);
20033 			setState(3006);
20034 			match(FILTER_COLUMN);
20035 			setState(3007);
20036 			match(EQ_);
20037 			setState(3008);
20038 			columnName();
20039 			setState(3009);
20040 			match(COMMA_);
20041 			setState(3010);
20042 			match(RETENTION_PERIOD);
20043 			setState(3011);
20044 			match(EQ_);
20045 			setState(3012);
20046 			historyRetentionPeriod();
20047 			}
20048 			}
20049 		}
20050 		catch (RecognitionException re) {
20051 			_localctx.exception = re;
20052 			_errHandler.reportError(this, re);
20053 			_errHandler.recover(this, re);
20054 		}
20055 		finally {
20056 			exitRule();
20057 		}
20058 		return _localctx;
20059 	}
20060 
20061 	public static class TableStretchOptionsContext extends ParserRuleContext {
20062 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20063 		public List<TableStretchOptionContext> tableStretchOption() {
20064 			return getRuleContexts(TableStretchOptionContext.class);
20065 		}
20066 		public TableStretchOptionContext tableStretchOption(int i) {
20067 			return getRuleContext(TableStretchOptionContext.class,i);
20068 		}
20069 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20070 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20071 		public TerminalNode COMMA_(int i) {
20072 			return getToken(SQLServerStatementParser.COMMA_, i);
20073 		}
20074 		public TableStretchOptionsContext(ParserRuleContext parent, int invokingState) {
20075 			super(parent, invokingState);
20076 		}
20077 		@Override public int getRuleIndex() { return RULE_tableStretchOptions; }
20078 		@Override
20079 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20080 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOptions(this);
20081 			else return visitor.visitChildren(this);
20082 		}
20083 	}
20084 
20085 	public final TableStretchOptionsContext tableStretchOptions() throws RecognitionException {
20086 		TableStretchOptionsContext _localctx = new TableStretchOptionsContext(_ctx, getState());
20087 		enterRule(_localctx, 430, RULE_tableStretchOptions);
20088 		int _la;
20089 		try {
20090 			enterOuterAlt(_localctx, 1);
20091 			{
20092 			setState(3014);
20093 			match(LP_);
20094 			setState(3015);
20095 			tableStretchOption();
20096 			setState(3020);
20097 			_errHandler.sync(this);
20098 			_la = _input.LA(1);
20099 			while (_la==COMMA_) {
20100 				{
20101 				{
20102 				setState(3016);
20103 				match(COMMA_);
20104 				setState(3017);
20105 				tableStretchOption();
20106 				}
20107 				}
20108 				setState(3022);
20109 				_errHandler.sync(this);
20110 				_la = _input.LA(1);
20111 			}
20112 			setState(3023);
20113 			match(RP_);
20114 			}
20115 		}
20116 		catch (RecognitionException re) {
20117 			_localctx.exception = re;
20118 			_errHandler.reportError(this, re);
20119 			_errHandler.recover(this, re);
20120 		}
20121 		finally {
20122 			exitRule();
20123 		}
20124 		return _localctx;
20125 	}
20126 
20127 	public static class TableStretchOptionContext extends ParserRuleContext {
20128 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
20129 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
20130 		public TerminalNode EQ_(int i) {
20131 			return getToken(SQLServerStatementParser.EQ_, i);
20132 		}
20133 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
20134 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
20135 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
20136 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
20137 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
20138 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
20139 		public FunctionCallContext functionCall() {
20140 			return getRuleContext(FunctionCallContext.class,0);
20141 		}
20142 		public TableStretchOptionContext(ParserRuleContext parent, int invokingState) {
20143 			super(parent, invokingState);
20144 		}
20145 		@Override public int getRuleIndex() { return RULE_tableStretchOption; }
20146 		@Override
20147 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20148 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOption(this);
20149 			else return visitor.visitChildren(this);
20150 		}
20151 	}
20152 
20153 	public final TableStretchOptionContext tableStretchOption() throws RecognitionException {
20154 		TableStretchOptionContext _localctx = new TableStretchOptionContext(_ctx, getState());
20155 		enterRule(_localctx, 432, RULE_tableStretchOption);
20156 		int _la;
20157 		try {
20158 			enterOuterAlt(_localctx, 1);
20159 			{
20160 			setState(3032);
20161 			_errHandler.sync(this);
20162 			_la = _input.LA(1);
20163 			if (_la==FILTER_PREDICATE) {
20164 				{
20165 				setState(3025);
20166 				match(FILTER_PREDICATE);
20167 				setState(3026);
20168 				match(EQ_);
20169 				setState(3029);
20170 				_errHandler.sync(this);
20171 				switch (_input.LA(1)) {
20172 				case NULL:
20173 					{
20174 					setState(3027);
20175 					match(NULL);
20176 					}
20177 					break;
20178 				case TRUNCATE:
20179 				case SCHEMA:
20180 				case COLUMNS:
20181 				case PRECISION:
20182 				case FUNCTION:
20183 				case TRIGGER:
20184 				case CAST:
20185 				case TRIM:
20186 				case SUBSTRING:
20187 				case OFF:
20188 				case IF:
20189 				case GROUP:
20190 				case LIMIT:
20191 				case OFFSET:
20192 				case SAVEPOINT:
20193 				case BOOLEAN:
20194 				case CHAR:
20195 				case ARRAY:
20196 				case INTERVAL:
20197 				case DATE:
20198 				case TIMESTAMP:
20199 				case LOCALTIME:
20200 				case LOCALTIMESTAMP:
20201 				case YEAR:
20202 				case QUARTER:
20203 				case MONTH:
20204 				case WEEK:
20205 				case DAY:
20206 				case SECOND:
20207 				case MICROSECOND:
20208 				case MAX:
20209 				case MIN:
20210 				case SUM:
20211 				case COUNT:
20212 				case AVG:
20213 				case ENABLE:
20214 				case DISABLE:
20215 				case INSTANCE:
20216 				case DO:
20217 				case DEFINER:
20218 				case SQL:
20219 				case CASCADED:
20220 				case LOCAL:
20221 				case NEXT:
20222 				case NAME:
20223 				case INTEGER:
20224 				case TYPE:
20225 				case TEXT:
20226 				case VIEWS:
20227 				case READ_ONLY:
20228 				case DATABASE:
20229 				case RETURNS:
20230 				case DATEPART:
20231 				case PASSWORD:
20232 				case JSON_OBJECT:
20233 				case JSON_ARRAY:
20234 				case FIRST_VALUE:
20235 				case LAST_VALUE:
20236 				case APPROX_PERCENTILE_CONT:
20237 				case APPROX_PERCENTILE_DISC:
20238 				case BINARY:
20239 				case HIDDEN_:
20240 				case MOD:
20241 				case PARTITION:
20242 				case PARTITIONS:
20243 				case TOP:
20244 				case ROW:
20245 				case ROWS:
20246 				case XOR:
20247 				case ALWAYS:
20248 				case ROLE:
20249 				case START:
20250 				case ALGORITHM:
20251 				case AUTO:
20252 				case BLOCKERS:
20253 				case CLUSTERED:
20254 				case NONCLUSTERED:
20255 				case COLUMNSTORE:
20256 				case CONTENT:
20257 				case CONVERT:
20258 				case YEARS:
20259 				case MONTHS:
20260 				case WEEKS:
20261 				case DAYS:
20262 				case MINUTES:
20263 				case DENY:
20264 				case DETERMINISTIC:
20265 				case DISTRIBUTION:
20266 				case DOCUMENT:
20267 				case DURABILITY:
20268 				case ENCRYPTED:
20269 				case FILESTREAM:
20270 				case FILETABLE:
20271 				case FILLFACTOR:
20272 				case FOLLOWING:
20273 				case HASH:
20274 				case HEAP:
20275 				case INBOUND:
20276 				case OUTBOUND:
20277 				case UNBOUNDED:
20278 				case INFINITE:
20279 				case LOGIN:
20280 				case MASKED:
20281 				case MAXDOP:
20282 				case MOVE:
20283 				case NOCHECK:
20284 				case OBJECT:
20285 				case ONLINE:
20286 				case OVER:
20287 				case PAGE:
20288 				case PAUSED:
20289 				case PERIOD:
20290 				case PERSISTED:
20291 				case PRECEDING:
20292 				case RANDOMIZED:
20293 				case RANGE:
20294 				case REBUILD:
20295 				case REPLICATE:
20296 				case REPLICATION:
20297 				case RESUMABLE:
20298 				case ROWGUIDCOL:
20299 				case SAVE:
20300 				case SELF:
20301 				case SPARSE:
20302 				case SWITCH:
20303 				case TRAN:
20304 				case TRANCOUNT:
20305 				case CONTROL:
20306 				case CONCAT:
20307 				case TAKE:
20308 				case OWNERSHIP:
20309 				case DEFINITION:
20310 				case APPLICATION:
20311 				case ASSEMBLY:
20312 				case SYMMETRIC:
20313 				case ASYMMETRIC:
20314 				case SERVER:
20315 				case RECEIVE:
20316 				case CHANGE:
20317 				case TRACE:
20318 				case TRACKING:
20319 				case RESOURCES:
20320 				case SETTINGS:
20321 				case STATE:
20322 				case AVAILABILITY:
20323 				case CREDENTIAL:
20324 				case ENDPOINT:
20325 				case EVENT:
20326 				case NOTIFICATION:
20327 				case LINKED:
20328 				case AUDIT:
20329 				case DDL:
20330 				case XML:
20331 				case IMPERSONATE:
20332 				case SECURABLES:
20333 				case AUTHENTICATE:
20334 				case EXTERNAL:
20335 				case ACCESS:
20336 				case ADMINISTER:
20337 				case BULK:
20338 				case OPERATIONS:
20339 				case UNSAFE:
20340 				case SHUTDOWN:
20341 				case SCOPED:
20342 				case CONFIGURATION:
20343 				case DATASPACE:
20344 				case SERVICE:
20345 				case CERTIFICATE:
20346 				case CONTRACT:
20347 				case ENCRYPTION:
20348 				case MASTER:
20349 				case DATA:
20350 				case SOURCE:
20351 				case FILE:
20352 				case FORMAT:
20353 				case LIBRARY:
20354 				case FULLTEXT:
20355 				case MASK:
20356 				case UNMASK:
20357 				case MESSAGE:
20358 				case REMOTE:
20359 				case BINDING:
20360 				case ROUTE:
20361 				case SECURITY:
20362 				case POLICY:
20363 				case AGGREGATE:
20364 				case QUEUE:
20365 				case RULE:
20366 				case SYNONYM:
20367 				case COLLECTION:
20368 				case SCRIPT:
20369 				case KILL:
20370 				case BACKUP:
20371 				case LOG:
20372 				case SHOWPLAN:
20373 				case SUBSCRIBE:
20374 				case QUERY:
20375 				case NOTIFICATIONS:
20376 				case CHECKPOINT:
20377 				case SEQUENCE:
20378 				case ABORT_AFTER_WAIT:
20379 				case ALLOW_PAGE_LOCKS:
20380 				case ALLOW_ROW_LOCKS:
20381 				case ALL_SPARSE_COLUMNS:
20382 				case BUCKET_COUNT:
20383 				case COLUMNSTORE_ARCHIVE:
20384 				case COLUMN_ENCRYPTION_KEY:
20385 				case COLUMN_SET:
20386 				case COMPRESSION_DELAY:
20387 				case DATABASE_DEAULT:
20388 				case DATA_COMPRESSION:
20389 				case DATA_CONSISTENCY_CHECK:
20390 				case ENCRYPTION_TYPE:
20391 				case SYSTEM_TIME:
20392 				case SYSTEM_VERSIONING:
20393 				case TEXTIMAGE_ON:
20394 				case WAIT_AT_LOW_PRIORITY:
20395 				case STATISTICS_INCREMENTAL:
20396 				case STATISTICS_NORECOMPUTE:
20397 				case ROUND_ROBIN:
20398 				case SCHEMA_AND_DATA:
20399 				case SCHEMA_ONLY:
20400 				case SORT_IN_TEMPDB:
20401 				case IGNORE_DUP_KEY:
20402 				case IMPLICIT_TRANSACTIONS:
20403 				case MAX_DURATION:
20404 				case MEMORY_OPTIMIZED:
20405 				case MIGRATION_STATE:
20406 				case PAD_INDEX:
20407 				case REMOTE_DATA_ARCHIVE:
20408 				case FILESTREAM_ON:
20409 				case FILETABLE_COLLATE_FILENAME:
20410 				case FILETABLE_DIRECTORY:
20411 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
20412 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
20413 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
20414 				case FILTER_PREDICATE:
20415 				case HISTORY_RETENTION_PERIOD:
20416 				case HISTORY_TABLE:
20417 				case LOCK_ESCALATION:
20418 				case DROP_EXISTING:
20419 				case ROW_NUMBER:
20420 				case FIRST:
20421 				case DATETIME2:
20422 				case OUTPUT:
20423 				case INSERTED:
20424 				case DELETED:
20425 				case FILENAME:
20426 				case SIZE:
20427 				case MAXSIZE:
20428 				case FILEGROWTH:
20429 				case UNLIMITED:
20430 				case KB:
20431 				case MB:
20432 				case GB:
20433 				case TB:
20434 				case CONTAINS:
20435 				case MEMORY_OPTIMIZED_DATA:
20436 				case FILEGROUP:
20437 				case NON_TRANSACTED_ACCESS:
20438 				case DB_CHAINING:
20439 				case TRUSTWORTHY:
20440 				case FORWARD_ONLY:
20441 				case KEYSET:
20442 				case FAST_FORWARD:
20443 				case SCROLL_LOCKS:
20444 				case OPTIMISTIC:
20445 				case TYPE_WARNING:
20446 				case SCHEMABINDING:
20447 				case CALLER:
20448 				case INPUT:
20449 				case OWNER:
20450 				case SNAPSHOT:
20451 				case REPEATABLE:
20452 				case SERIALIZABLE:
20453 				case NATIVE_COMPILATION:
20454 				case VIEW_METADATA:
20455 				case INSTEAD:
20456 				case APPEND:
20457 				case INCREMENT:
20458 				case CACHE:
20459 				case MINVALUE:
20460 				case MAXVALUE:
20461 				case RESTART:
20462 				case LOB_COMPACTION:
20463 				case COMPRESS_ALL_ROW_GROUPS:
20464 				case REORGANIZE:
20465 				case RESUME:
20466 				case PAUSE:
20467 				case ABORT:
20468 				case ACCELERATED_DATABASE_RECOVERY:
20469 				case PERSISTENT_VERSION_STORE_FILEGROUP:
20470 				case IMMEDIATE:
20471 				case NO_WAIT:
20472 				case TARGET_RECOVERY_TIME:
20473 				case SECONDS:
20474 				case HONOR_BROKER_PRIORITY:
20475 				case ERROR_BROKER_CONVERSATIONS:
20476 				case NEW_BROKER:
20477 				case DISABLE_BROKER:
20478 				case ENABLE_BROKER:
20479 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
20480 				case READ_COMMITTED_SNAPSHOT:
20481 				case ALLOW_SNAPSHOT_ISOLATION:
20482 				case RECURSIVE_TRIGGERS:
20483 				case QUOTED_IDENTIFIER:
20484 				case NUMERIC_ROUNDABORT:
20485 				case CONCAT_NULL_YIELDS_NULL:
20486 				case COMPATIBILITY_LEVEL:
20487 				case ARITHABORT:
20488 				case ANSI_WARNINGS:
20489 				case ANSI_PADDING:
20490 				case ANSI_NULLS:
20491 				case ANSI_NULL_DEFAULT:
20492 				case PAGE_VERIFY:
20493 				case CHECKSUM:
20494 				case TORN_PAGE_DETECTION:
20495 				case BULK_LOGGED:
20496 				case RECOVERY:
20497 				case TOTAL_EXECUTION_CPU_TIME_MS:
20498 				case TOTAL_COMPILE_CPU_TIME_MS:
20499 				case STALE_CAPTURE_POLICY_THRESHOLD:
20500 				case EXECUTION_COUNT:
20501 				case QUERY_CAPTURE_POLICY:
20502 				case WAIT_STATS_CAPTURE_MODE:
20503 				case MAX_PLANS_PER_QUERY:
20504 				case QUERY_CAPTURE_MODE:
20505 				case SIZE_BASED_CLEANUP_MODE:
20506 				case INTERVAL_LENGTH_MINUTES:
20507 				case MAX_STORAGE_SIZE_MB:
20508 				case DATA_FLUSH_INTERVAL_SECONDS:
20509 				case CLEANUP_POLICY:
20510 				case CUSTOM:
20511 				case STALE_QUERY_THRESHOLD_DAYS:
20512 				case OPERATION_MODE:
20513 				case QUERY_STORE:
20514 				case CURSOR_DEFAULT:
20515 				case GLOBAL:
20516 				case CURSOR_CLOSE_ON_COMMIT:
20517 				case HOURS:
20518 				case CHANGE_RETENTION:
20519 				case AUTO_CLEANUP:
20520 				case CHANGE_TRACKING:
20521 				case AUTOMATIC_TUNING:
20522 				case FORCE_LAST_GOOD_PLAN:
20523 				case AUTO_UPDATE_STATISTICS_ASYNC:
20524 				case AUTO_UPDATE_STATISTICS:
20525 				case AUTO_SHRINK:
20526 				case AUTO_CREATE_STATISTICS:
20527 				case INCREMENTAL:
20528 				case AUTO_CLOSE:
20529 				case DATA_RETENTION:
20530 				case TEMPORAL_HISTORY_RETENTION:
20531 				case EDITION:
20532 				case MIXED_PAGE_ALLOCATION:
20533 				case DISABLED:
20534 				case ALLOWED:
20535 				case HADR:
20536 				case MULTI_USER:
20537 				case RESTRICTED_USER:
20538 				case SINGLE_USER:
20539 				case OFFLINE:
20540 				case EMERGENCY:
20541 				case SUSPEND:
20542 				case DATE_CORRELATION_OPTIMIZATION:
20543 				case ELASTIC_POOL:
20544 				case SERVICE_OBJECTIVE:
20545 				case DATABASE_NAME:
20546 				case ALLOW_CONNECTIONS:
20547 				case GEO:
20548 				case NAMED:
20549 				case DATEFIRST:
20550 				case BACKUP_STORAGE_REDUNDANCY:
20551 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
20552 				case SECONDARY:
20553 				case FAILOVER:
20554 				case DEFAULT_FULLTEXT_LANGUAGE:
20555 				case DEFAULT_LANGUAGE:
20556 				case INLINE:
20557 				case NESTED_TRIGGERS:
20558 				case TRANSFORM_NOISE_WORDS:
20559 				case TWO_DIGIT_YEAR_CUTOFF:
20560 				case PERSISTENT_LOG_BUFFER:
20561 				case DIRECTORY_NAME:
20562 				case DATEFORMAT:
20563 				case DELAYED_DURABILITY:
20564 				case AUTHORIZATION:
20565 				case TRANSFER:
20566 				case PROVIDER:
20567 				case SEARCH:
20568 				case MEMBER:
20569 				case OPENJSON:
20570 				case OPENROWSET:
20571 				case TRY_CAST:
20572 				case TRY_CONVERT:
20573 				case IDENTIFIER_:
20574 				case DELIMITED_IDENTIFIER_:
20575 					{
20576 					setState(3028);
20577 					functionCall();
20578 					}
20579 					break;
20580 				default:
20581 					throw new NoViableAltException(this);
20582 				}
20583 				setState(3031);
20584 				match(COMMA_);
20585 				}
20586 			}
20587 
20588 			setState(3034);
20589 			match(MIGRATION_STATE);
20590 			setState(3035);
20591 			match(EQ_);
20592 			setState(3036);
20593 			_la = _input.LA(1);
20594 			if ( !(((((_la - 293)) & ~0x3f) == 0 && ((1L << (_la - 293)) & ((1L << (INBOUND - 293)) | (1L << (OUTBOUND - 293)) | (1L << (PAUSED - 293)))) != 0)) ) {
20595 			_errHandler.recoverInline(this);
20596 			}
20597 			else {
20598 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20599 				_errHandler.reportMatch(this);
20600 				consume();
20601 			}
20602 			}
20603 		}
20604 		catch (RecognitionException re) {
20605 			_localctx.exception = re;
20606 			_errHandler.reportError(this, re);
20607 			_errHandler.recover(this, re);
20608 		}
20609 		finally {
20610 			exitRule();
20611 		}
20612 		return _localctx;
20613 	}
20614 
20615 	public static class MigrationState_Context extends ParserRuleContext {
20616 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20617 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
20618 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20619 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
20620 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20621 		public MigrationState_Context(ParserRuleContext parent, int invokingState) {
20622 			super(parent, invokingState);
20623 		}
20624 		@Override public int getRuleIndex() { return RULE_migrationState_; }
20625 		@Override
20626 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20627 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMigrationState_(this);
20628 			else return visitor.visitChildren(this);
20629 		}
20630 	}
20631 
20632 	public final MigrationState_Context migrationState_() throws RecognitionException {
20633 		MigrationState_Context _localctx = new MigrationState_Context(_ctx, getState());
20634 		enterRule(_localctx, 434, RULE_migrationState_);
20635 		try {
20636 			enterOuterAlt(_localctx, 1);
20637 			{
20638 			setState(3038);
20639 			match(LP_);
20640 			setState(3039);
20641 			match(MIGRATION_STATE);
20642 			setState(3040);
20643 			match(EQ_);
20644 			setState(3041);
20645 			match(PAUSED);
20646 			setState(3042);
20647 			match(RP_);
20648 			}
20649 		}
20650 		catch (RecognitionException re) {
20651 			_localctx.exception = re;
20652 			_errHandler.reportError(this, re);
20653 			_errHandler.recover(this, re);
20654 		}
20655 		finally {
20656 			exitRule();
20657 		}
20658 		return _localctx;
20659 	}
20660 
20661 	public static class TableOperationOptionContext extends ParserRuleContext {
20662 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
20663 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20664 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
20665 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
20666 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
20667 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
20668 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
20669 		public OnHistoryTableClauseContext onHistoryTableClause() {
20670 			return getRuleContext(OnHistoryTableClauseContext.class,0);
20671 		}
20672 		public TableOperationOptionContext(ParserRuleContext parent, int invokingState) {
20673 			super(parent, invokingState);
20674 		}
20675 		@Override public int getRuleIndex() { return RULE_tableOperationOption; }
20676 		@Override
20677 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20678 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOperationOption(this);
20679 			else return visitor.visitChildren(this);
20680 		}
20681 	}
20682 
20683 	public final TableOperationOptionContext tableOperationOption() throws RecognitionException {
20684 		TableOperationOptionContext _localctx = new TableOperationOptionContext(_ctx, getState());
20685 		enterRule(_localctx, 436, RULE_tableOperationOption);
20686 		int _la;
20687 		try {
20688 			setState(3056);
20689 			_errHandler.sync(this);
20690 			switch (_input.LA(1)) {
20691 			case MEMORY_OPTIMIZED:
20692 				enterOuterAlt(_localctx, 1);
20693 				{
20694 				{
20695 				setState(3044);
20696 				match(MEMORY_OPTIMIZED);
20697 				setState(3045);
20698 				match(EQ_);
20699 				setState(3046);
20700 				match(ON);
20701 				}
20702 				}
20703 				break;
20704 			case DURABILITY:
20705 				enterOuterAlt(_localctx, 2);
20706 				{
20707 				{
20708 				setState(3047);
20709 				match(DURABILITY);
20710 				setState(3048);
20711 				match(EQ_);
20712 				setState(3049);
20713 				_la = _input.LA(1);
20714 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
20715 				_errHandler.recoverInline(this);
20716 				}
20717 				else {
20718 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20719 					_errHandler.reportMatch(this);
20720 					consume();
20721 				}
20722 				}
20723 				}
20724 				break;
20725 			case SYSTEM_VERSIONING:
20726 				enterOuterAlt(_localctx, 3);
20727 				{
20728 				{
20729 				setState(3050);
20730 				match(SYSTEM_VERSIONING);
20731 				setState(3051);
20732 				match(EQ_);
20733 				setState(3052);
20734 				match(ON);
20735 				setState(3054);
20736 				_errHandler.sync(this);
20737 				_la = _input.LA(1);
20738 				if (_la==LP_) {
20739 					{
20740 					setState(3053);
20741 					onHistoryTableClause();
20742 					}
20743 				}
20744 
20745 				}
20746 				}
20747 				break;
20748 			default:
20749 				throw new NoViableAltException(this);
20750 			}
20751 		}
20752 		catch (RecognitionException re) {
20753 			_localctx.exception = re;
20754 			_errHandler.reportError(this, re);
20755 			_errHandler.recover(this, re);
20756 		}
20757 		finally {
20758 			exitRule();
20759 		}
20760 		return _localctx;
20761 	}
20762 
20763 	public static class DistributionOptionContext extends ParserRuleContext {
20764 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
20765 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20766 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
20767 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20768 		public ColumnNameContext columnName() {
20769 			return getRuleContext(ColumnNameContext.class,0);
20770 		}
20771 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20772 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
20773 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
20774 		public DistributionOptionContext(ParserRuleContext parent, int invokingState) {
20775 			super(parent, invokingState);
20776 		}
20777 		@Override public int getRuleIndex() { return RULE_distributionOption; }
20778 		@Override
20779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistributionOption(this);
20781 			else return visitor.visitChildren(this);
20782 		}
20783 	}
20784 
20785 	public final DistributionOptionContext distributionOption() throws RecognitionException {
20786 		DistributionOptionContext _localctx = new DistributionOptionContext(_ctx, getState());
20787 		enterRule(_localctx, 438, RULE_distributionOption);
20788 		try {
20789 			enterOuterAlt(_localctx, 1);
20790 			{
20791 			setState(3058);
20792 			match(DISTRIBUTION);
20793 			setState(3059);
20794 			match(EQ_);
20795 			setState(3067);
20796 			_errHandler.sync(this);
20797 			switch (_input.LA(1)) {
20798 			case HASH:
20799 				{
20800 				setState(3060);
20801 				match(HASH);
20802 				setState(3061);
20803 				match(LP_);
20804 				setState(3062);
20805 				columnName();
20806 				setState(3063);
20807 				match(RP_);
20808 				}
20809 				break;
20810 			case ROUND_ROBIN:
20811 				{
20812 				setState(3065);
20813 				match(ROUND_ROBIN);
20814 				}
20815 				break;
20816 			case REPLICATE:
20817 				{
20818 				setState(3066);
20819 				match(REPLICATE);
20820 				}
20821 				break;
20822 			default:
20823 				throw new NoViableAltException(this);
20824 			}
20825 			}
20826 		}
20827 		catch (RecognitionException re) {
20828 			_localctx.exception = re;
20829 			_errHandler.reportError(this, re);
20830 			_errHandler.recover(this, re);
20831 		}
20832 		finally {
20833 			exitRule();
20834 		}
20835 		return _localctx;
20836 	}
20837 
20838 	public static class DataWareHouseTableOptionContext extends ParserRuleContext {
20839 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
20840 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
20841 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
20842 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
20843 		public ColumnNamesContext columnNames() {
20844 			return getRuleContext(ColumnNamesContext.class,0);
20845 		}
20846 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
20847 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20848 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20849 		public List<ColumnNameContext> columnName() {
20850 			return getRuleContexts(ColumnNameContext.class);
20851 		}
20852 		public ColumnNameContext columnName(int i) {
20853 			return getRuleContext(ColumnNameContext.class,i);
20854 		}
20855 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20856 		public TerminalNode COMMA_(int i) {
20857 			return getToken(SQLServerStatementParser.COMMA_, i);
20858 		}
20859 		public List<TerminalNode> ASC() { return getTokens(SQLServerStatementParser.ASC); }
20860 		public TerminalNode ASC(int i) {
20861 			return getToken(SQLServerStatementParser.ASC, i);
20862 		}
20863 		public List<TerminalNode> DESC() { return getTokens(SQLServerStatementParser.DESC); }
20864 		public TerminalNode DESC(int i) {
20865 			return getToken(SQLServerStatementParser.DESC, i);
20866 		}
20867 		public DataWareHouseTableOptionContext(ParserRuleContext parent, int invokingState) {
20868 			super(parent, invokingState);
20869 		}
20870 		@Override public int getRuleIndex() { return RULE_dataWareHouseTableOption; }
20871 		@Override
20872 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20873 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHouseTableOption(this);
20874 			else return visitor.visitChildren(this);
20875 		}
20876 	}
20877 
20878 	public final DataWareHouseTableOptionContext dataWareHouseTableOption() throws RecognitionException {
20879 		DataWareHouseTableOptionContext _localctx = new DataWareHouseTableOptionContext(_ctx, getState());
20880 		enterRule(_localctx, 440, RULE_dataWareHouseTableOption);
20881 		int _la;
20882 		try {
20883 			setState(3097);
20884 			_errHandler.sync(this);
20885 			switch ( getInterpreter().adaptivePredict(_input,269,_ctx) ) {
20886 			case 1:
20887 				enterOuterAlt(_localctx, 1);
20888 				{
20889 				setState(3069);
20890 				match(CLUSTERED);
20891 				setState(3070);
20892 				match(COLUMNSTORE);
20893 				setState(3071);
20894 				match(INDEX);
20895 				}
20896 				break;
20897 			case 2:
20898 				enterOuterAlt(_localctx, 2);
20899 				{
20900 				setState(3072);
20901 				match(CLUSTERED);
20902 				setState(3073);
20903 				match(COLUMNSTORE);
20904 				setState(3074);
20905 				match(INDEX);
20906 				setState(3075);
20907 				match(ORDER);
20908 				setState(3076);
20909 				columnNames();
20910 				}
20911 				break;
20912 			case 3:
20913 				enterOuterAlt(_localctx, 3);
20914 				{
20915 				setState(3077);
20916 				match(HEAP);
20917 				}
20918 				break;
20919 			case 4:
20920 				enterOuterAlt(_localctx, 4);
20921 				{
20922 				setState(3078);
20923 				match(CLUSTERED);
20924 				setState(3079);
20925 				match(INDEX);
20926 				setState(3080);
20927 				match(LP_);
20928 				{
20929 				setState(3081);
20930 				columnName();
20931 				setState(3083);
20932 				_errHandler.sync(this);
20933 				_la = _input.LA(1);
20934 				if (_la==ASC || _la==DESC) {
20935 					{
20936 					setState(3082);
20937 					_la = _input.LA(1);
20938 					if ( !(_la==ASC || _la==DESC) ) {
20939 					_errHandler.recoverInline(this);
20940 					}
20941 					else {
20942 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20943 						_errHandler.reportMatch(this);
20944 						consume();
20945 					}
20946 					}
20947 				}
20948 
20949 				}
20950 				setState(3092);
20951 				_errHandler.sync(this);
20952 				_la = _input.LA(1);
20953 				while (_la==COMMA_) {
20954 					{
20955 					{
20956 					setState(3085);
20957 					match(COMMA_);
20958 					{
20959 					setState(3086);
20960 					columnName();
20961 					setState(3088);
20962 					_errHandler.sync(this);
20963 					_la = _input.LA(1);
20964 					if (_la==ASC || _la==DESC) {
20965 						{
20966 						setState(3087);
20967 						_la = _input.LA(1);
20968 						if ( !(_la==ASC || _la==DESC) ) {
20969 						_errHandler.recoverInline(this);
20970 						}
20971 						else {
20972 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20973 							_errHandler.reportMatch(this);
20974 							consume();
20975 						}
20976 						}
20977 					}
20978 
20979 					}
20980 					}
20981 					}
20982 					setState(3094);
20983 					_errHandler.sync(this);
20984 					_la = _input.LA(1);
20985 				}
20986 				setState(3095);
20987 				match(RP_);
20988 				}
20989 				break;
20990 			}
20991 		}
20992 		catch (RecognitionException re) {
20993 			_localctx.exception = re;
20994 			_errHandler.reportError(this, re);
20995 			_errHandler.recover(this, re);
20996 		}
20997 		finally {
20998 			exitRule();
20999 		}
21000 		return _localctx;
21001 	}
21002 
21003 	public static class DataWareHousePartitionOptionContext extends ParserRuleContext {
21004 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
21005 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
21006 		public TerminalNode LP_(int i) {
21007 			return getToken(SQLServerStatementParser.LP_, i);
21008 		}
21009 		public ColumnNameContext columnName() {
21010 			return getRuleContext(ColumnNameContext.class,0);
21011 		}
21012 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
21013 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
21014 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
21015 		public List<SimpleExprContext> simpleExpr() {
21016 			return getRuleContexts(SimpleExprContext.class);
21017 		}
21018 		public SimpleExprContext simpleExpr(int i) {
21019 			return getRuleContext(SimpleExprContext.class,i);
21020 		}
21021 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
21022 		public TerminalNode RP_(int i) {
21023 			return getToken(SQLServerStatementParser.RP_, i);
21024 		}
21025 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21026 		public TerminalNode COMMA_(int i) {
21027 			return getToken(SQLServerStatementParser.COMMA_, i);
21028 		}
21029 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
21030 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
21031 		public DataWareHousePartitionOptionContext(ParserRuleContext parent, int invokingState) {
21032 			super(parent, invokingState);
21033 		}
21034 		@Override public int getRuleIndex() { return RULE_dataWareHousePartitionOption; }
21035 		@Override
21036 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21037 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHousePartitionOption(this);
21038 			else return visitor.visitChildren(this);
21039 		}
21040 	}
21041 
21042 	public final DataWareHousePartitionOptionContext dataWareHousePartitionOption() throws RecognitionException {
21043 		DataWareHousePartitionOptionContext _localctx = new DataWareHousePartitionOptionContext(_ctx, getState());
21044 		enterRule(_localctx, 442, RULE_dataWareHousePartitionOption);
21045 		int _la;
21046 		try {
21047 			enterOuterAlt(_localctx, 1);
21048 			{
21049 			{
21050 			setState(3099);
21051 			match(PARTITION);
21052 			setState(3100);
21053 			match(LP_);
21054 			setState(3101);
21055 			columnName();
21056 			setState(3102);
21057 			match(RANGE);
21058 			setState(3104);
21059 			_errHandler.sync(this);
21060 			_la = _input.LA(1);
21061 			if (_la==LEFT || _la==RIGHT) {
21062 				{
21063 				setState(3103);
21064 				_la = _input.LA(1);
21065 				if ( !(_la==LEFT || _la==RIGHT) ) {
21066 				_errHandler.recoverInline(this);
21067 				}
21068 				else {
21069 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21070 					_errHandler.reportMatch(this);
21071 					consume();
21072 				}
21073 				}
21074 			}
21075 
21076 			setState(3106);
21077 			match(FOR);
21078 			setState(3107);
21079 			match(VALUES);
21080 			setState(3108);
21081 			match(LP_);
21082 			setState(3109);
21083 			simpleExpr(0);
21084 			setState(3114);
21085 			_errHandler.sync(this);
21086 			_la = _input.LA(1);
21087 			while (_la==COMMA_) {
21088 				{
21089 				{
21090 				setState(3110);
21091 				match(COMMA_);
21092 				setState(3111);
21093 				simpleExpr(0);
21094 				}
21095 				}
21096 				setState(3116);
21097 				_errHandler.sync(this);
21098 				_la = _input.LA(1);
21099 			}
21100 			setState(3117);
21101 			match(RP_);
21102 			setState(3118);
21103 			match(RP_);
21104 			}
21105 			}
21106 		}
21107 		catch (RecognitionException re) {
21108 			_localctx.exception = re;
21109 			_errHandler.reportError(this, re);
21110 			_errHandler.recover(this, re);
21111 		}
21112 		finally {
21113 			exitRule();
21114 		}
21115 		return _localctx;
21116 	}
21117 
21118 	public static class CreateIndexSpecificationContext extends ParserRuleContext {
21119 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
21120 		public ClusterOptionContext clusterOption() {
21121 			return getRuleContext(ClusterOptionContext.class,0);
21122 		}
21123 		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
21124 			super(parent, invokingState);
21125 		}
21126 		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
21127 		@Override
21128 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21129 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexSpecification(this);
21130 			else return visitor.visitChildren(this);
21131 		}
21132 	}
21133 
21134 	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
21135 		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
21136 		enterRule(_localctx, 444, RULE_createIndexSpecification);
21137 		int _la;
21138 		try {
21139 			enterOuterAlt(_localctx, 1);
21140 			{
21141 			setState(3121);
21142 			_errHandler.sync(this);
21143 			_la = _input.LA(1);
21144 			if (_la==UNIQUE) {
21145 				{
21146 				setState(3120);
21147 				match(UNIQUE);
21148 				}
21149 			}
21150 
21151 			setState(3124);
21152 			_errHandler.sync(this);
21153 			_la = _input.LA(1);
21154 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
21155 				{
21156 				setState(3123);
21157 				clusterOption();
21158 				}
21159 			}
21160 
21161 			}
21162 		}
21163 		catch (RecognitionException re) {
21164 			_localctx.exception = re;
21165 			_errHandler.reportError(this, re);
21166 			_errHandler.recover(this, re);
21167 		}
21168 		finally {
21169 			exitRule();
21170 		}
21171 		return _localctx;
21172 	}
21173 
21174 	public static class AlterDefinitionClauseContext extends ParserRuleContext {
21175 		public AddColumnSpecificationContext addColumnSpecification() {
21176 			return getRuleContext(AddColumnSpecificationContext.class,0);
21177 		}
21178 		public ModifyColumnSpecificationContext modifyColumnSpecification() {
21179 			return getRuleContext(ModifyColumnSpecificationContext.class,0);
21180 		}
21181 		public AlterDropContext alterDrop() {
21182 			return getRuleContext(AlterDropContext.class,0);
21183 		}
21184 		public AlterCheckConstraintContext alterCheckConstraint() {
21185 			return getRuleContext(AlterCheckConstraintContext.class,0);
21186 		}
21187 		public AlterTableTriggerContext alterTableTrigger() {
21188 			return getRuleContext(AlterTableTriggerContext.class,0);
21189 		}
21190 		public AlterSwitchContext alterSwitch() {
21191 			return getRuleContext(AlterSwitchContext.class,0);
21192 		}
21193 		public AlterSetContext alterSet() {
21194 			return getRuleContext(AlterSetContext.class,0);
21195 		}
21196 		public AlterTableOptionContext alterTableOption() {
21197 			return getRuleContext(AlterTableOptionContext.class,0);
21198 		}
21199 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
21200 		public AlterDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
21201 			super(parent, invokingState);
21202 		}
21203 		@Override public int getRuleIndex() { return RULE_alterDefinitionClause; }
21204 		@Override
21205 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21206 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDefinitionClause(this);
21207 			else return visitor.visitChildren(this);
21208 		}
21209 	}
21210 
21211 	public final AlterDefinitionClauseContext alterDefinitionClause() throws RecognitionException {
21212 		AlterDefinitionClauseContext _localctx = new AlterDefinitionClauseContext(_ctx, getState());
21213 		enterRule(_localctx, 446, RULE_alterDefinitionClause);
21214 		try {
21215 			setState(3135);
21216 			_errHandler.sync(this);
21217 			switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) {
21218 			case 1:
21219 				enterOuterAlt(_localctx, 1);
21220 				{
21221 				setState(3126);
21222 				addColumnSpecification();
21223 				}
21224 				break;
21225 			case 2:
21226 				enterOuterAlt(_localctx, 2);
21227 				{
21228 				setState(3127);
21229 				modifyColumnSpecification();
21230 				}
21231 				break;
21232 			case 3:
21233 				enterOuterAlt(_localctx, 3);
21234 				{
21235 				setState(3128);
21236 				alterDrop();
21237 				}
21238 				break;
21239 			case 4:
21240 				enterOuterAlt(_localctx, 4);
21241 				{
21242 				setState(3129);
21243 				alterCheckConstraint();
21244 				}
21245 				break;
21246 			case 5:
21247 				enterOuterAlt(_localctx, 5);
21248 				{
21249 				setState(3130);
21250 				alterTableTrigger();
21251 				}
21252 				break;
21253 			case 6:
21254 				enterOuterAlt(_localctx, 6);
21255 				{
21256 				setState(3131);
21257 				alterSwitch();
21258 				}
21259 				break;
21260 			case 7:
21261 				enterOuterAlt(_localctx, 7);
21262 				{
21263 				setState(3132);
21264 				alterSet();
21265 				}
21266 				break;
21267 			case 8:
21268 				enterOuterAlt(_localctx, 8);
21269 				{
21270 				setState(3133);
21271 				alterTableOption();
21272 				}
21273 				break;
21274 			case 9:
21275 				enterOuterAlt(_localctx, 9);
21276 				{
21277 				setState(3134);
21278 				match(REBUILD);
21279 				}
21280 				break;
21281 			}
21282 		}
21283 		catch (RecognitionException re) {
21284 			_localctx.exception = re;
21285 			_errHandler.reportError(this, re);
21286 			_errHandler.recover(this, re);
21287 		}
21288 		finally {
21289 			exitRule();
21290 		}
21291 		return _localctx;
21292 	}
21293 
21294 	public static class AddColumnSpecificationContext extends ParserRuleContext {
21295 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
21296 		public AlterColumnAddOptionsContext alterColumnAddOptions() {
21297 			return getRuleContext(AlterColumnAddOptionsContext.class,0);
21298 		}
21299 		public GeneratedColumnNamesClauseContext generatedColumnNamesClause() {
21300 			return getRuleContext(GeneratedColumnNamesClauseContext.class,0);
21301 		}
21302 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21303 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
21304 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
21305 		public AddColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
21306 			super(parent, invokingState);
21307 		}
21308 		@Override public int getRuleIndex() { return RULE_addColumnSpecification; }
21309 		@Override
21310 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21311 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddColumnSpecification(this);
21312 			else return visitor.visitChildren(this);
21313 		}
21314 	}
21315 
21316 	public final AddColumnSpecificationContext addColumnSpecification() throws RecognitionException {
21317 		AddColumnSpecificationContext _localctx = new AddColumnSpecificationContext(_ctx, getState());
21318 		enterRule(_localctx, 448, RULE_addColumnSpecification);
21319 		int _la;
21320 		try {
21321 			enterOuterAlt(_localctx, 1);
21322 			{
21323 			setState(3139);
21324 			_errHandler.sync(this);
21325 			_la = _input.LA(1);
21326 			if (_la==WITH) {
21327 				{
21328 				setState(3137);
21329 				match(WITH);
21330 				setState(3138);
21331 				_la = _input.LA(1);
21332 				if ( !(_la==CHECK || _la==NOCHECK) ) {
21333 				_errHandler.recoverInline(this);
21334 				}
21335 				else {
21336 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21337 					_errHandler.reportMatch(this);
21338 					consume();
21339 				}
21340 				}
21341 			}
21342 
21343 			setState(3141);
21344 			match(ADD);
21345 			setState(3144);
21346 			_errHandler.sync(this);
21347 			switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) {
21348 			case 1:
21349 				{
21350 				setState(3142);
21351 				alterColumnAddOptions();
21352 				}
21353 				break;
21354 			case 2:
21355 				{
21356 				setState(3143);
21357 				generatedColumnNamesClause();
21358 				}
21359 				break;
21360 			}
21361 			}
21362 		}
21363 		catch (RecognitionException re) {
21364 			_localctx.exception = re;
21365 			_errHandler.reportError(this, re);
21366 			_errHandler.recover(this, re);
21367 		}
21368 		finally {
21369 			exitRule();
21370 		}
21371 		return _localctx;
21372 	}
21373 
21374 	public static class ModifyColumnSpecificationContext extends ParserRuleContext {
21375 		public AlterColumnOperationContext alterColumnOperation() {
21376 			return getRuleContext(AlterColumnOperationContext.class,0);
21377 		}
21378 		public DataTypeContext dataType() {
21379 			return getRuleContext(DataTypeContext.class,0);
21380 		}
21381 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
21382 		public CollationNameContext collationName() {
21383 			return getRuleContext(CollationNameContext.class,0);
21384 		}
21385 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
21386 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
21387 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
21388 		public ModifyColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
21389 			super(parent, invokingState);
21390 		}
21391 		@Override public int getRuleIndex() { return RULE_modifyColumnSpecification; }
21392 		@Override
21393 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21394 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitModifyColumnSpecification(this);
21395 			else return visitor.visitChildren(this);
21396 		}
21397 	}
21398 
21399 	public final ModifyColumnSpecificationContext modifyColumnSpecification() throws RecognitionException {
21400 		ModifyColumnSpecificationContext _localctx = new ModifyColumnSpecificationContext(_ctx, getState());
21401 		enterRule(_localctx, 450, RULE_modifyColumnSpecification);
21402 		int _la;
21403 		try {
21404 			enterOuterAlt(_localctx, 1);
21405 			{
21406 			setState(3146);
21407 			alterColumnOperation();
21408 			setState(3147);
21409 			dataType();
21410 			setState(3150);
21411 			_errHandler.sync(this);
21412 			_la = _input.LA(1);
21413 			if (_la==COLLATE) {
21414 				{
21415 				setState(3148);
21416 				match(COLLATE);
21417 				setState(3149);
21418 				collationName();
21419 				}
21420 			}
21421 
21422 			setState(3155);
21423 			_errHandler.sync(this);
21424 			switch (_input.LA(1)) {
21425 			case NULL:
21426 				{
21427 				setState(3152);
21428 				match(NULL);
21429 				}
21430 				break;
21431 			case NOT:
21432 				{
21433 				setState(3153);
21434 				match(NOT);
21435 				setState(3154);
21436 				match(NULL);
21437 				}
21438 				break;
21439 			case EOF:
21440 			case COMMA_:
21441 			case SEMI_:
21442 			case SELECT:
21443 			case INSERT:
21444 			case UPDATE:
21445 			case DELETE:
21446 			case CREATE:
21447 			case ALTER:
21448 			case DROP:
21449 			case TRUNCATE:
21450 			case SET:
21451 			case WITH:
21452 			case DECLARE:
21453 			case RETURN:
21454 			case END:
21455 			case SPARSE:
21456 				break;
21457 			default:
21458 				break;
21459 			}
21460 			setState(3158);
21461 			_errHandler.sync(this);
21462 			_la = _input.LA(1);
21463 			if (_la==SPARSE) {
21464 				{
21465 				setState(3157);
21466 				match(SPARSE);
21467 				}
21468 			}
21469 
21470 			}
21471 		}
21472 		catch (RecognitionException re) {
21473 			_localctx.exception = re;
21474 			_errHandler.reportError(this, re);
21475 			_errHandler.recover(this, re);
21476 		}
21477 		finally {
21478 			exitRule();
21479 		}
21480 		return _localctx;
21481 	}
21482 
21483 	public static class AlterColumnOperationContext extends ParserRuleContext {
21484 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
21485 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
21486 		public ColumnNameContext columnName() {
21487 			return getRuleContext(ColumnNameContext.class,0);
21488 		}
21489 		public AlterColumnOperationContext(ParserRuleContext parent, int invokingState) {
21490 			super(parent, invokingState);
21491 		}
21492 		@Override public int getRuleIndex() { return RULE_alterColumnOperation; }
21493 		@Override
21494 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21495 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnOperation(this);
21496 			else return visitor.visitChildren(this);
21497 		}
21498 	}
21499 
21500 	public final AlterColumnOperationContext alterColumnOperation() throws RecognitionException {
21501 		AlterColumnOperationContext _localctx = new AlterColumnOperationContext(_ctx, getState());
21502 		enterRule(_localctx, 452, RULE_alterColumnOperation);
21503 		try {
21504 			enterOuterAlt(_localctx, 1);
21505 			{
21506 			setState(3160);
21507 			match(ALTER);
21508 			setState(3161);
21509 			match(COLUMN);
21510 			setState(3162);
21511 			columnName();
21512 			}
21513 		}
21514 		catch (RecognitionException re) {
21515 			_localctx.exception = re;
21516 			_errHandler.reportError(this, re);
21517 			_errHandler.recover(this, re);
21518 		}
21519 		finally {
21520 			exitRule();
21521 		}
21522 		return _localctx;
21523 	}
21524 
21525 	public static class AlterColumnAddOptionsContext extends ParserRuleContext {
21526 		public List<AlterColumnAddOptionContext> alterColumnAddOption() {
21527 			return getRuleContexts(AlterColumnAddOptionContext.class);
21528 		}
21529 		public AlterColumnAddOptionContext alterColumnAddOption(int i) {
21530 			return getRuleContext(AlterColumnAddOptionContext.class,i);
21531 		}
21532 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21533 		public TerminalNode COMMA_(int i) {
21534 			return getToken(SQLServerStatementParser.COMMA_, i);
21535 		}
21536 		public AlterColumnAddOptionsContext(ParserRuleContext parent, int invokingState) {
21537 			super(parent, invokingState);
21538 		}
21539 		@Override public int getRuleIndex() { return RULE_alterColumnAddOptions; }
21540 		@Override
21541 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21542 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOptions(this);
21543 			else return visitor.visitChildren(this);
21544 		}
21545 	}
21546 
21547 	public final AlterColumnAddOptionsContext alterColumnAddOptions() throws RecognitionException {
21548 		AlterColumnAddOptionsContext _localctx = new AlterColumnAddOptionsContext(_ctx, getState());
21549 		enterRule(_localctx, 454, RULE_alterColumnAddOptions);
21550 		try {
21551 			int _alt;
21552 			enterOuterAlt(_localctx, 1);
21553 			{
21554 			setState(3164);
21555 			alterColumnAddOption();
21556 			setState(3169);
21557 			_errHandler.sync(this);
21558 			_alt = getInterpreter().adaptivePredict(_input,280,_ctx);
21559 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21560 				if ( _alt==1 ) {
21561 					{
21562 					{
21563 					setState(3165);
21564 					match(COMMA_);
21565 					setState(3166);
21566 					alterColumnAddOption();
21567 					}
21568 					} 
21569 				}
21570 				setState(3171);
21571 				_errHandler.sync(this);
21572 				_alt = getInterpreter().adaptivePredict(_input,280,_ctx);
21573 			}
21574 			}
21575 		}
21576 		catch (RecognitionException re) {
21577 			_localctx.exception = re;
21578 			_errHandler.reportError(this, re);
21579 			_errHandler.recover(this, re);
21580 		}
21581 		finally {
21582 			exitRule();
21583 		}
21584 		return _localctx;
21585 	}
21586 
21587 	public static class AlterColumnAddOptionContext extends ParserRuleContext {
21588 		public ColumnDefinitionContext columnDefinition() {
21589 			return getRuleContext(ColumnDefinitionContext.class,0);
21590 		}
21591 		public ComputedColumnDefinitionContext computedColumnDefinition() {
21592 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
21593 		}
21594 		public ColumnSetDefinitionContext columnSetDefinition() {
21595 			return getRuleContext(ColumnSetDefinitionContext.class,0);
21596 		}
21597 		public TableConstraintContext tableConstraint() {
21598 			return getRuleContext(TableConstraintContext.class,0);
21599 		}
21600 		public AlterTableTableIndexContext alterTableTableIndex() {
21601 			return getRuleContext(AlterTableTableIndexContext.class,0);
21602 		}
21603 		public ConstraintForColumnContext constraintForColumn() {
21604 			return getRuleContext(ConstraintForColumnContext.class,0);
21605 		}
21606 		public AlterColumnAddOptionContext(ParserRuleContext parent, int invokingState) {
21607 			super(parent, invokingState);
21608 		}
21609 		@Override public int getRuleIndex() { return RULE_alterColumnAddOption; }
21610 		@Override
21611 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21612 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOption(this);
21613 			else return visitor.visitChildren(this);
21614 		}
21615 	}
21616 
21617 	public final AlterColumnAddOptionContext alterColumnAddOption() throws RecognitionException {
21618 		AlterColumnAddOptionContext _localctx = new AlterColumnAddOptionContext(_ctx, getState());
21619 		enterRule(_localctx, 456, RULE_alterColumnAddOption);
21620 		try {
21621 			setState(3178);
21622 			_errHandler.sync(this);
21623 			switch ( getInterpreter().adaptivePredict(_input,281,_ctx) ) {
21624 			case 1:
21625 				enterOuterAlt(_localctx, 1);
21626 				{
21627 				setState(3172);
21628 				columnDefinition();
21629 				}
21630 				break;
21631 			case 2:
21632 				enterOuterAlt(_localctx, 2);
21633 				{
21634 				setState(3173);
21635 				computedColumnDefinition();
21636 				}
21637 				break;
21638 			case 3:
21639 				enterOuterAlt(_localctx, 3);
21640 				{
21641 				setState(3174);
21642 				columnSetDefinition();
21643 				}
21644 				break;
21645 			case 4:
21646 				enterOuterAlt(_localctx, 4);
21647 				{
21648 				setState(3175);
21649 				tableConstraint();
21650 				}
21651 				break;
21652 			case 5:
21653 				enterOuterAlt(_localctx, 5);
21654 				{
21655 				setState(3176);
21656 				alterTableTableIndex();
21657 				}
21658 				break;
21659 			case 6:
21660 				enterOuterAlt(_localctx, 6);
21661 				{
21662 				setState(3177);
21663 				constraintForColumn();
21664 				}
21665 				break;
21666 			}
21667 		}
21668 		catch (RecognitionException re) {
21669 			_localctx.exception = re;
21670 			_errHandler.reportError(this, re);
21671 			_errHandler.recover(this, re);
21672 		}
21673 		finally {
21674 			exitRule();
21675 		}
21676 		return _localctx;
21677 	}
21678 
21679 	public static class ConstraintForColumnContext extends ParserRuleContext {
21680 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
21681 		public SimpleExprContext simpleExpr() {
21682 			return getRuleContext(SimpleExprContext.class,0);
21683 		}
21684 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
21685 		public ColumnNameContext columnName() {
21686 			return getRuleContext(ColumnNameContext.class,0);
21687 		}
21688 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21689 		public ConstraintNameContext constraintName() {
21690 			return getRuleContext(ConstraintNameContext.class,0);
21691 		}
21692 		public ConstraintForColumnContext(ParserRuleContext parent, int invokingState) {
21693 			super(parent, invokingState);
21694 		}
21695 		@Override public int getRuleIndex() { return RULE_constraintForColumn; }
21696 		@Override
21697 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21698 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintForColumn(this);
21699 			else return visitor.visitChildren(this);
21700 		}
21701 	}
21702 
21703 	public final ConstraintForColumnContext constraintForColumn() throws RecognitionException {
21704 		ConstraintForColumnContext _localctx = new ConstraintForColumnContext(_ctx, getState());
21705 		enterRule(_localctx, 458, RULE_constraintForColumn);
21706 		int _la;
21707 		try {
21708 			enterOuterAlt(_localctx, 1);
21709 			{
21710 			setState(3182);
21711 			_errHandler.sync(this);
21712 			_la = _input.LA(1);
21713 			if (_la==CONSTRAINT) {
21714 				{
21715 				setState(3180);
21716 				match(CONSTRAINT);
21717 				setState(3181);
21718 				constraintName();
21719 				}
21720 			}
21721 
21722 			setState(3184);
21723 			match(DEFAULT);
21724 			setState(3185);
21725 			simpleExpr(0);
21726 			setState(3186);
21727 			match(FOR);
21728 			setState(3187);
21729 			columnName();
21730 			}
21731 		}
21732 		catch (RecognitionException re) {
21733 			_localctx.exception = re;
21734 			_errHandler.reportError(this, re);
21735 			_errHandler.recover(this, re);
21736 		}
21737 		finally {
21738 			exitRule();
21739 		}
21740 		return _localctx;
21741 	}
21742 
21743 	public static class GeneratedColumnNamesClauseContext extends ParserRuleContext {
21744 		public GeneratedColumnNameClauseContext generatedColumnNameClause() {
21745 			return getRuleContext(GeneratedColumnNameClauseContext.class,0);
21746 		}
21747 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21748 		public PeriodClauseContext periodClause() {
21749 			return getRuleContext(PeriodClauseContext.class,0);
21750 		}
21751 		public GeneratedColumnNamesClauseContext(ParserRuleContext parent, int invokingState) {
21752 			super(parent, invokingState);
21753 		}
21754 		@Override public int getRuleIndex() { return RULE_generatedColumnNamesClause; }
21755 		@Override
21756 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21757 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNamesClause(this);
21758 			else return visitor.visitChildren(this);
21759 		}
21760 	}
21761 
21762 	public final GeneratedColumnNamesClauseContext generatedColumnNamesClause() throws RecognitionException {
21763 		GeneratedColumnNamesClauseContext _localctx = new GeneratedColumnNamesClauseContext(_ctx, getState());
21764 		enterRule(_localctx, 460, RULE_generatedColumnNamesClause);
21765 		try {
21766 			setState(3197);
21767 			_errHandler.sync(this);
21768 			switch ( getInterpreter().adaptivePredict(_input,283,_ctx) ) {
21769 			case 1:
21770 				enterOuterAlt(_localctx, 1);
21771 				{
21772 				setState(3189);
21773 				generatedColumnNameClause();
21774 				setState(3190);
21775 				match(COMMA_);
21776 				setState(3191);
21777 				periodClause();
21778 				}
21779 				break;
21780 			case 2:
21781 				enterOuterAlt(_localctx, 2);
21782 				{
21783 				setState(3193);
21784 				periodClause();
21785 				setState(3194);
21786 				match(COMMA_);
21787 				setState(3195);
21788 				generatedColumnNameClause();
21789 				}
21790 				break;
21791 			}
21792 		}
21793 		catch (RecognitionException re) {
21794 			_localctx.exception = re;
21795 			_errHandler.reportError(this, re);
21796 			_errHandler.recover(this, re);
21797 		}
21798 		finally {
21799 			exitRule();
21800 		}
21801 		return _localctx;
21802 	}
21803 
21804 	public static class GeneratedColumnNameClauseContext extends ParserRuleContext {
21805 		public List<GeneratedColumnNameContext> generatedColumnName() {
21806 			return getRuleContexts(GeneratedColumnNameContext.class);
21807 		}
21808 		public GeneratedColumnNameContext generatedColumnName(int i) {
21809 			return getRuleContext(GeneratedColumnNameContext.class,i);
21810 		}
21811 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
21812 		public SimpleExprContext simpleExpr() {
21813 			return getRuleContext(SimpleExprContext.class,0);
21814 		}
21815 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21816 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21817 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
21818 		public GeneratedColumnNameClauseContext(ParserRuleContext parent, int invokingState) {
21819 			super(parent, invokingState);
21820 		}
21821 		@Override public int getRuleIndex() { return RULE_generatedColumnNameClause; }
21822 		@Override
21823 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21824 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNameClause(this);
21825 			else return visitor.visitChildren(this);
21826 		}
21827 	}
21828 
21829 	public final GeneratedColumnNameClauseContext generatedColumnNameClause() throws RecognitionException {
21830 		GeneratedColumnNameClauseContext _localctx = new GeneratedColumnNameClauseContext(_ctx, getState());
21831 		enterRule(_localctx, 462, RULE_generatedColumnNameClause);
21832 		int _la;
21833 		try {
21834 			enterOuterAlt(_localctx, 1);
21835 			{
21836 			setState(3199);
21837 			generatedColumnName();
21838 			setState(3200);
21839 			match(DEFAULT);
21840 			setState(3201);
21841 			simpleExpr(0);
21842 			setState(3204);
21843 			_errHandler.sync(this);
21844 			_la = _input.LA(1);
21845 			if (_la==WITH) {
21846 				{
21847 				setState(3202);
21848 				match(WITH);
21849 				setState(3203);
21850 				match(VALUES);
21851 				}
21852 			}
21853 
21854 			setState(3206);
21855 			match(COMMA_);
21856 			setState(3207);
21857 			generatedColumnName();
21858 			}
21859 		}
21860 		catch (RecognitionException re) {
21861 			_localctx.exception = re;
21862 			_errHandler.reportError(this, re);
21863 			_errHandler.recover(this, re);
21864 		}
21865 		finally {
21866 			exitRule();
21867 		}
21868 		return _localctx;
21869 	}
21870 
21871 	public static class GeneratedColumnNameContext extends ParserRuleContext {
21872 		public ColumnNameContext columnName() {
21873 			return getRuleContext(ColumnNameContext.class,0);
21874 		}
21875 		public DataTypeNameContext dataTypeName() {
21876 			return getRuleContext(DataTypeNameContext.class,0);
21877 		}
21878 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
21879 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
21880 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
21881 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
21882 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
21883 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
21884 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
21885 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21886 		public IgnoredIdentifierContext ignoredIdentifier() {
21887 			return getRuleContext(IgnoredIdentifierContext.class,0);
21888 		}
21889 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
21890 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
21891 		public GeneratedColumnNameContext(ParserRuleContext parent, int invokingState) {
21892 			super(parent, invokingState);
21893 		}
21894 		@Override public int getRuleIndex() { return RULE_generatedColumnName; }
21895 		@Override
21896 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21897 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnName(this);
21898 			else return visitor.visitChildren(this);
21899 		}
21900 	}
21901 
21902 	public final GeneratedColumnNameContext generatedColumnName() throws RecognitionException {
21903 		GeneratedColumnNameContext _localctx = new GeneratedColumnNameContext(_ctx, getState());
21904 		enterRule(_localctx, 464, RULE_generatedColumnName);
21905 		int _la;
21906 		try {
21907 			enterOuterAlt(_localctx, 1);
21908 			{
21909 			setState(3209);
21910 			columnName();
21911 			setState(3210);
21912 			dataTypeName();
21913 			setState(3211);
21914 			match(GENERATED);
21915 			setState(3212);
21916 			match(ALWAYS);
21917 			setState(3213);
21918 			match(AS);
21919 			setState(3214);
21920 			match(ROW);
21921 			setState(3216);
21922 			_errHandler.sync(this);
21923 			switch ( getInterpreter().adaptivePredict(_input,285,_ctx) ) {
21924 			case 1:
21925 				{
21926 				setState(3215);
21927 				_la = _input.LA(1);
21928 				if ( !(_la==START || _la==END) ) {
21929 				_errHandler.recoverInline(this);
21930 				}
21931 				else {
21932 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21933 					_errHandler.reportMatch(this);
21934 					consume();
21935 				}
21936 				}
21937 				break;
21938 			}
21939 			setState(3219);
21940 			_errHandler.sync(this);
21941 			_la = _input.LA(1);
21942 			if (_la==HIDDEN_) {
21943 				{
21944 				setState(3218);
21945 				match(HIDDEN_);
21946 				}
21947 			}
21948 
21949 			setState(3223);
21950 			_errHandler.sync(this);
21951 			_la = _input.LA(1);
21952 			if (_la==NOT) {
21953 				{
21954 				setState(3221);
21955 				match(NOT);
21956 				setState(3222);
21957 				match(NULL);
21958 				}
21959 			}
21960 
21961 			setState(3227);
21962 			_errHandler.sync(this);
21963 			_la = _input.LA(1);
21964 			if (_la==CONSTRAINT) {
21965 				{
21966 				setState(3225);
21967 				match(CONSTRAINT);
21968 				setState(3226);
21969 				ignoredIdentifier();
21970 				}
21971 			}
21972 
21973 			}
21974 		}
21975 		catch (RecognitionException re) {
21976 			_localctx.exception = re;
21977 			_errHandler.reportError(this, re);
21978 			_errHandler.recover(this, re);
21979 		}
21980 		finally {
21981 			exitRule();
21982 		}
21983 		return _localctx;
21984 	}
21985 
21986 	public static class AlterDropContext extends ParserRuleContext {
21987 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
21988 		public AlterTableDropConstraintContext alterTableDropConstraint() {
21989 			return getRuleContext(AlterTableDropConstraintContext.class,0);
21990 		}
21991 		public DropColumnSpecificationContext dropColumnSpecification() {
21992 			return getRuleContext(DropColumnSpecificationContext.class,0);
21993 		}
21994 		public DropIndexSpecificationContext dropIndexSpecification() {
21995 			return getRuleContext(DropIndexSpecificationContext.class,0);
21996 		}
21997 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
21998 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
21999 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
22000 		public AlterDropContext(ParserRuleContext parent, int invokingState) {
22001 			super(parent, invokingState);
22002 		}
22003 		@Override public int getRuleIndex() { return RULE_alterDrop; }
22004 		@Override
22005 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22006 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDrop(this);
22007 			else return visitor.visitChildren(this);
22008 		}
22009 	}
22010 
22011 	public final AlterDropContext alterDrop() throws RecognitionException {
22012 		AlterDropContext _localctx = new AlterDropContext(_ctx, getState());
22013 		enterRule(_localctx, 466, RULE_alterDrop);
22014 		try {
22015 			enterOuterAlt(_localctx, 1);
22016 			{
22017 			setState(3229);
22018 			match(DROP);
22019 			setState(3236);
22020 			_errHandler.sync(this);
22021 			switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) {
22022 			case 1:
22023 				{
22024 				setState(3230);
22025 				alterTableDropConstraint();
22026 				}
22027 				break;
22028 			case 2:
22029 				{
22030 				setState(3231);
22031 				dropColumnSpecification();
22032 				}
22033 				break;
22034 			case 3:
22035 				{
22036 				setState(3232);
22037 				dropIndexSpecification();
22038 				}
22039 				break;
22040 			case 4:
22041 				{
22042 				setState(3233);
22043 				match(PERIOD);
22044 				setState(3234);
22045 				match(FOR);
22046 				setState(3235);
22047 				match(SYSTEM_TIME);
22048 				}
22049 				break;
22050 			}
22051 			}
22052 		}
22053 		catch (RecognitionException re) {
22054 			_localctx.exception = re;
22055 			_errHandler.reportError(this, re);
22056 			_errHandler.recover(this, re);
22057 		}
22058 		finally {
22059 			exitRule();
22060 		}
22061 		return _localctx;
22062 	}
22063 
22064 	public static class AlterTableDropConstraintContext extends ParserRuleContext {
22065 		public List<DropConstraintNameContext> dropConstraintName() {
22066 			return getRuleContexts(DropConstraintNameContext.class);
22067 		}
22068 		public DropConstraintNameContext dropConstraintName(int i) {
22069 			return getRuleContext(DropConstraintNameContext.class,i);
22070 		}
22071 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
22072 		public IfExistsContext ifExists() {
22073 			return getRuleContext(IfExistsContext.class,0);
22074 		}
22075 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22076 		public TerminalNode COMMA_(int i) {
22077 			return getToken(SQLServerStatementParser.COMMA_, i);
22078 		}
22079 		public AlterTableDropConstraintContext(ParserRuleContext parent, int invokingState) {
22080 			super(parent, invokingState);
22081 		}
22082 		@Override public int getRuleIndex() { return RULE_alterTableDropConstraint; }
22083 		@Override
22084 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22085 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableDropConstraint(this);
22086 			else return visitor.visitChildren(this);
22087 		}
22088 	}
22089 
22090 	public final AlterTableDropConstraintContext alterTableDropConstraint() throws RecognitionException {
22091 		AlterTableDropConstraintContext _localctx = new AlterTableDropConstraintContext(_ctx, getState());
22092 		enterRule(_localctx, 468, RULE_alterTableDropConstraint);
22093 		int _la;
22094 		try {
22095 			int _alt;
22096 			enterOuterAlt(_localctx, 1);
22097 			{
22098 			setState(3239);
22099 			_errHandler.sync(this);
22100 			_la = _input.LA(1);
22101 			if (_la==CONSTRAINT) {
22102 				{
22103 				setState(3238);
22104 				match(CONSTRAINT);
22105 				}
22106 			}
22107 
22108 			setState(3242);
22109 			_errHandler.sync(this);
22110 			_la = _input.LA(1);
22111 			if (_la==IF) {
22112 				{
22113 				setState(3241);
22114 				ifExists();
22115 				}
22116 			}
22117 
22118 			setState(3244);
22119 			dropConstraintName();
22120 			setState(3249);
22121 			_errHandler.sync(this);
22122 			_alt = getInterpreter().adaptivePredict(_input,292,_ctx);
22123 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22124 				if ( _alt==1 ) {
22125 					{
22126 					{
22127 					setState(3245);
22128 					match(COMMA_);
22129 					setState(3246);
22130 					dropConstraintName();
22131 					}
22132 					} 
22133 				}
22134 				setState(3251);
22135 				_errHandler.sync(this);
22136 				_alt = getInterpreter().adaptivePredict(_input,292,_ctx);
22137 			}
22138 			}
22139 		}
22140 		catch (RecognitionException re) {
22141 			_localctx.exception = re;
22142 			_errHandler.reportError(this, re);
22143 			_errHandler.recover(this, re);
22144 		}
22145 		finally {
22146 			exitRule();
22147 		}
22148 		return _localctx;
22149 	}
22150 
22151 	public static class DropConstraintNameContext extends ParserRuleContext {
22152 		public ConstraintNameContext constraintName() {
22153 			return getRuleContext(ConstraintNameContext.class,0);
22154 		}
22155 		public DropConstraintWithClauseContext dropConstraintWithClause() {
22156 			return getRuleContext(DropConstraintWithClauseContext.class,0);
22157 		}
22158 		public DropConstraintNameContext(ParserRuleContext parent, int invokingState) {
22159 			super(parent, invokingState);
22160 		}
22161 		@Override public int getRuleIndex() { return RULE_dropConstraintName; }
22162 		@Override
22163 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22164 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintName(this);
22165 			else return visitor.visitChildren(this);
22166 		}
22167 	}
22168 
22169 	public final DropConstraintNameContext dropConstraintName() throws RecognitionException {
22170 		DropConstraintNameContext _localctx = new DropConstraintNameContext(_ctx, getState());
22171 		enterRule(_localctx, 470, RULE_dropConstraintName);
22172 		try {
22173 			enterOuterAlt(_localctx, 1);
22174 			{
22175 			setState(3252);
22176 			constraintName();
22177 			setState(3254);
22178 			_errHandler.sync(this);
22179 			switch ( getInterpreter().adaptivePredict(_input,293,_ctx) ) {
22180 			case 1:
22181 				{
22182 				setState(3253);
22183 				dropConstraintWithClause();
22184 				}
22185 				break;
22186 			}
22187 			}
22188 		}
22189 		catch (RecognitionException re) {
22190 			_localctx.exception = re;
22191 			_errHandler.reportError(this, re);
22192 			_errHandler.recover(this, re);
22193 		}
22194 		finally {
22195 			exitRule();
22196 		}
22197 		return _localctx;
22198 	}
22199 
22200 	public static class DropConstraintWithClauseContext extends ParserRuleContext {
22201 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22202 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22203 		public List<DropConstraintOptionContext> dropConstraintOption() {
22204 			return getRuleContexts(DropConstraintOptionContext.class);
22205 		}
22206 		public DropConstraintOptionContext dropConstraintOption(int i) {
22207 			return getRuleContext(DropConstraintOptionContext.class,i);
22208 		}
22209 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22210 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22211 		public TerminalNode COMMA_(int i) {
22212 			return getToken(SQLServerStatementParser.COMMA_, i);
22213 		}
22214 		public DropConstraintWithClauseContext(ParserRuleContext parent, int invokingState) {
22215 			super(parent, invokingState);
22216 		}
22217 		@Override public int getRuleIndex() { return RULE_dropConstraintWithClause; }
22218 		@Override
22219 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22220 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintWithClause(this);
22221 			else return visitor.visitChildren(this);
22222 		}
22223 	}
22224 
22225 	public final DropConstraintWithClauseContext dropConstraintWithClause() throws RecognitionException {
22226 		DropConstraintWithClauseContext _localctx = new DropConstraintWithClauseContext(_ctx, getState());
22227 		enterRule(_localctx, 472, RULE_dropConstraintWithClause);
22228 		int _la;
22229 		try {
22230 			enterOuterAlt(_localctx, 1);
22231 			{
22232 			setState(3256);
22233 			match(WITH);
22234 			setState(3257);
22235 			match(LP_);
22236 			setState(3258);
22237 			dropConstraintOption();
22238 			setState(3263);
22239 			_errHandler.sync(this);
22240 			_la = _input.LA(1);
22241 			while (_la==COMMA_) {
22242 				{
22243 				{
22244 				setState(3259);
22245 				match(COMMA_);
22246 				setState(3260);
22247 				dropConstraintOption();
22248 				}
22249 				}
22250 				setState(3265);
22251 				_errHandler.sync(this);
22252 				_la = _input.LA(1);
22253 			}
22254 			setState(3266);
22255 			match(RP_);
22256 			}
22257 		}
22258 		catch (RecognitionException re) {
22259 			_localctx.exception = re;
22260 			_errHandler.reportError(this, re);
22261 			_errHandler.recover(this, re);
22262 		}
22263 		finally {
22264 			exitRule();
22265 		}
22266 		return _localctx;
22267 	}
22268 
22269 	public static class DropConstraintOptionContext extends ParserRuleContext {
22270 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
22271 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22272 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
22273 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
22274 		public OnOffOptionContext onOffOption() {
22275 			return getRuleContext(OnOffOptionContext.class,0);
22276 		}
22277 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
22278 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
22279 		public SchemaNameContext schemaName() {
22280 			return getRuleContext(SchemaNameContext.class,0);
22281 		}
22282 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22283 		public ColumnNameContext columnName() {
22284 			return getRuleContext(ColumnNameContext.class,0);
22285 		}
22286 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22287 		public IgnoredIdentifierContext ignoredIdentifier() {
22288 			return getRuleContext(IgnoredIdentifierContext.class,0);
22289 		}
22290 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
22291 		public DropConstraintOptionContext(ParserRuleContext parent, int invokingState) {
22292 			super(parent, invokingState);
22293 		}
22294 		@Override public int getRuleIndex() { return RULE_dropConstraintOption; }
22295 		@Override
22296 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22297 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintOption(this);
22298 			else return visitor.visitChildren(this);
22299 		}
22300 	}
22301 
22302 	public final DropConstraintOptionContext dropConstraintOption() throws RecognitionException {
22303 		DropConstraintOptionContext _localctx = new DropConstraintOptionContext(_ctx, getState());
22304 		enterRule(_localctx, 474, RULE_dropConstraintOption);
22305 		try {
22306 			enterOuterAlt(_localctx, 1);
22307 			{
22308 			setState(3285);
22309 			_errHandler.sync(this);
22310 			switch (_input.LA(1)) {
22311 			case MAXDOP:
22312 				{
22313 				setState(3268);
22314 				match(MAXDOP);
22315 				setState(3269);
22316 				match(EQ_);
22317 				setState(3270);
22318 				match(NUMBER_);
22319 				}
22320 				break;
22321 			case ONLINE:
22322 				{
22323 				setState(3271);
22324 				match(ONLINE);
22325 				setState(3272);
22326 				match(EQ_);
22327 				setState(3273);
22328 				onOffOption();
22329 				}
22330 				break;
22331 			case MOVE:
22332 				{
22333 				setState(3274);
22334 				match(MOVE);
22335 				setState(3275);
22336 				match(TO);
22337 				setState(3283);
22338 				_errHandler.sync(this);
22339 				switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) {
22340 				case 1:
22341 					{
22342 					setState(3276);
22343 					schemaName();
22344 					setState(3277);
22345 					match(LP_);
22346 					setState(3278);
22347 					columnName();
22348 					setState(3279);
22349 					match(RP_);
22350 					}
22351 					break;
22352 				case 2:
22353 					{
22354 					setState(3281);
22355 					ignoredIdentifier();
22356 					}
22357 					break;
22358 				case 3:
22359 					{
22360 					setState(3282);
22361 					match(STRING_);
22362 					}
22363 					break;
22364 				}
22365 				}
22366 				break;
22367 			default:
22368 				throw new NoViableAltException(this);
22369 			}
22370 			}
22371 		}
22372 		catch (RecognitionException re) {
22373 			_localctx.exception = re;
22374 			_errHandler.reportError(this, re);
22375 			_errHandler.recover(this, re);
22376 		}
22377 		finally {
22378 			exitRule();
22379 		}
22380 		return _localctx;
22381 	}
22382 
22383 	public static class OnOffOptionContext extends ParserRuleContext {
22384 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22385 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
22386 		public OnOffOptionContext(ParserRuleContext parent, int invokingState) {
22387 			super(parent, invokingState);
22388 		}
22389 		@Override public int getRuleIndex() { return RULE_onOffOption; }
22390 		@Override
22391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnOffOption(this);
22393 			else return visitor.visitChildren(this);
22394 		}
22395 	}
22396 
22397 	public final OnOffOptionContext onOffOption() throws RecognitionException {
22398 		OnOffOptionContext _localctx = new OnOffOptionContext(_ctx, getState());
22399 		enterRule(_localctx, 476, RULE_onOffOption);
22400 		int _la;
22401 		try {
22402 			enterOuterAlt(_localctx, 1);
22403 			{
22404 			setState(3287);
22405 			_la = _input.LA(1);
22406 			if ( !(_la==ON || _la==OFF) ) {
22407 			_errHandler.recoverInline(this);
22408 			}
22409 			else {
22410 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22411 				_errHandler.reportMatch(this);
22412 				consume();
22413 			}
22414 			}
22415 		}
22416 		catch (RecognitionException re) {
22417 			_localctx.exception = re;
22418 			_errHandler.reportError(this, re);
22419 			_errHandler.recover(this, re);
22420 		}
22421 		finally {
22422 			exitRule();
22423 		}
22424 		return _localctx;
22425 	}
22426 
22427 	public static class DropColumnSpecificationContext extends ParserRuleContext {
22428 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
22429 		public List<ColumnNameContext> columnName() {
22430 			return getRuleContexts(ColumnNameContext.class);
22431 		}
22432 		public ColumnNameContext columnName(int i) {
22433 			return getRuleContext(ColumnNameContext.class,i);
22434 		}
22435 		public IfExistsContext ifExists() {
22436 			return getRuleContext(IfExistsContext.class,0);
22437 		}
22438 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22439 		public TerminalNode COMMA_(int i) {
22440 			return getToken(SQLServerStatementParser.COMMA_, i);
22441 		}
22442 		public DropColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
22443 			super(parent, invokingState);
22444 		}
22445 		@Override public int getRuleIndex() { return RULE_dropColumnSpecification; }
22446 		@Override
22447 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22448 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropColumnSpecification(this);
22449 			else return visitor.visitChildren(this);
22450 		}
22451 	}
22452 
22453 	public final DropColumnSpecificationContext dropColumnSpecification() throws RecognitionException {
22454 		DropColumnSpecificationContext _localctx = new DropColumnSpecificationContext(_ctx, getState());
22455 		enterRule(_localctx, 478, RULE_dropColumnSpecification);
22456 		int _la;
22457 		try {
22458 			int _alt;
22459 			enterOuterAlt(_localctx, 1);
22460 			{
22461 			setState(3289);
22462 			match(COLUMN);
22463 			setState(3291);
22464 			_errHandler.sync(this);
22465 			_la = _input.LA(1);
22466 			if (_la==IF) {
22467 				{
22468 				setState(3290);
22469 				ifExists();
22470 				}
22471 			}
22472 
22473 			setState(3293);
22474 			columnName();
22475 			setState(3298);
22476 			_errHandler.sync(this);
22477 			_alt = getInterpreter().adaptivePredict(_input,298,_ctx);
22478 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22479 				if ( _alt==1 ) {
22480 					{
22481 					{
22482 					setState(3294);
22483 					match(COMMA_);
22484 					setState(3295);
22485 					columnName();
22486 					}
22487 					} 
22488 				}
22489 				setState(3300);
22490 				_errHandler.sync(this);
22491 				_alt = getInterpreter().adaptivePredict(_input,298,_ctx);
22492 			}
22493 			}
22494 		}
22495 		catch (RecognitionException re) {
22496 			_localctx.exception = re;
22497 			_errHandler.reportError(this, re);
22498 			_errHandler.recover(this, re);
22499 		}
22500 		finally {
22501 			exitRule();
22502 		}
22503 		return _localctx;
22504 	}
22505 
22506 	public static class DropIndexSpecificationContext extends ParserRuleContext {
22507 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
22508 		public List<IndexNameContext> indexName() {
22509 			return getRuleContexts(IndexNameContext.class);
22510 		}
22511 		public IndexNameContext indexName(int i) {
22512 			return getRuleContext(IndexNameContext.class,i);
22513 		}
22514 		public IfExistsContext ifExists() {
22515 			return getRuleContext(IfExistsContext.class,0);
22516 		}
22517 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22518 		public TerminalNode COMMA_(int i) {
22519 			return getToken(SQLServerStatementParser.COMMA_, i);
22520 		}
22521 		public DropIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
22522 			super(parent, invokingState);
22523 		}
22524 		@Override public int getRuleIndex() { return RULE_dropIndexSpecification; }
22525 		@Override
22526 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22527 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndexSpecification(this);
22528 			else return visitor.visitChildren(this);
22529 		}
22530 	}
22531 
22532 	public final DropIndexSpecificationContext dropIndexSpecification() throws RecognitionException {
22533 		DropIndexSpecificationContext _localctx = new DropIndexSpecificationContext(_ctx, getState());
22534 		enterRule(_localctx, 480, RULE_dropIndexSpecification);
22535 		int _la;
22536 		try {
22537 			int _alt;
22538 			enterOuterAlt(_localctx, 1);
22539 			{
22540 			setState(3301);
22541 			match(INDEX);
22542 			setState(3303);
22543 			_errHandler.sync(this);
22544 			_la = _input.LA(1);
22545 			if (_la==IF) {
22546 				{
22547 				setState(3302);
22548 				ifExists();
22549 				}
22550 			}
22551 
22552 			setState(3305);
22553 			indexName();
22554 			setState(3310);
22555 			_errHandler.sync(this);
22556 			_alt = getInterpreter().adaptivePredict(_input,300,_ctx);
22557 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22558 				if ( _alt==1 ) {
22559 					{
22560 					{
22561 					setState(3306);
22562 					match(COMMA_);
22563 					setState(3307);
22564 					indexName();
22565 					}
22566 					} 
22567 				}
22568 				setState(3312);
22569 				_errHandler.sync(this);
22570 				_alt = getInterpreter().adaptivePredict(_input,300,_ctx);
22571 			}
22572 			}
22573 		}
22574 		catch (RecognitionException re) {
22575 			_localctx.exception = re;
22576 			_errHandler.reportError(this, re);
22577 			_errHandler.recover(this, re);
22578 		}
22579 		finally {
22580 			exitRule();
22581 		}
22582 		return _localctx;
22583 	}
22584 
22585 	public static class AlterCheckConstraintContext extends ParserRuleContext {
22586 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
22587 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
22588 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
22589 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
22590 		public ConstraintNameContext constraintName() {
22591 			return getRuleContext(ConstraintNameContext.class,0);
22592 		}
22593 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22594 		public AlterCheckConstraintContext(ParserRuleContext parent, int invokingState) {
22595 			super(parent, invokingState);
22596 		}
22597 		@Override public int getRuleIndex() { return RULE_alterCheckConstraint; }
22598 		@Override
22599 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22600 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterCheckConstraint(this);
22601 			else return visitor.visitChildren(this);
22602 		}
22603 	}
22604 
22605 	public final AlterCheckConstraintContext alterCheckConstraint() throws RecognitionException {
22606 		AlterCheckConstraintContext _localctx = new AlterCheckConstraintContext(_ctx, getState());
22607 		enterRule(_localctx, 482, RULE_alterCheckConstraint);
22608 		int _la;
22609 		try {
22610 			enterOuterAlt(_localctx, 1);
22611 			{
22612 			setState(3314);
22613 			_errHandler.sync(this);
22614 			_la = _input.LA(1);
22615 			if (_la==WITH) {
22616 				{
22617 				setState(3313);
22618 				match(WITH);
22619 				}
22620 			}
22621 
22622 			setState(3316);
22623 			_la = _input.LA(1);
22624 			if ( !(_la==CHECK || _la==NOCHECK) ) {
22625 			_errHandler.recoverInline(this);
22626 			}
22627 			else {
22628 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22629 				_errHandler.reportMatch(this);
22630 				consume();
22631 			}
22632 			setState(3317);
22633 			match(CONSTRAINT);
22634 			setState(3320);
22635 			_errHandler.sync(this);
22636 			switch (_input.LA(1)) {
22637 			case ALL:
22638 				{
22639 				setState(3318);
22640 				match(ALL);
22641 				}
22642 				break;
22643 			case TRUNCATE:
22644 			case SCHEMA:
22645 			case COLUMNS:
22646 			case PRECISION:
22647 			case FUNCTION:
22648 			case TRIGGER:
22649 			case CAST:
22650 			case TRIM:
22651 			case SUBSTRING:
22652 			case OFF:
22653 			case GROUP:
22654 			case LIMIT:
22655 			case OFFSET:
22656 			case SAVEPOINT:
22657 			case BOOLEAN:
22658 			case ARRAY:
22659 			case DATE:
22660 			case TIMESTAMP:
22661 			case LOCALTIME:
22662 			case LOCALTIMESTAMP:
22663 			case YEAR:
22664 			case QUARTER:
22665 			case MONTH:
22666 			case WEEK:
22667 			case DAY:
22668 			case SECOND:
22669 			case MICROSECOND:
22670 			case MAX:
22671 			case MIN:
22672 			case SUM:
22673 			case COUNT:
22674 			case AVG:
22675 			case ENABLE:
22676 			case DISABLE:
22677 			case INSTANCE:
22678 			case DO:
22679 			case DEFINER:
22680 			case SQL:
22681 			case CASCADED:
22682 			case LOCAL:
22683 			case NEXT:
22684 			case NAME:
22685 			case INTEGER:
22686 			case TYPE:
22687 			case TEXT:
22688 			case VIEWS:
22689 			case READ_ONLY:
22690 			case DATABASE:
22691 			case RETURNS:
22692 			case DATEPART:
22693 			case PASSWORD:
22694 			case BINARY:
22695 			case HIDDEN_:
22696 			case MOD:
22697 			case PARTITION:
22698 			case PARTITIONS:
22699 			case TOP:
22700 			case ROW:
22701 			case ROWS:
22702 			case XOR:
22703 			case ALWAYS:
22704 			case ROLE:
22705 			case START:
22706 			case ALGORITHM:
22707 			case AUTO:
22708 			case BLOCKERS:
22709 			case CLUSTERED:
22710 			case NONCLUSTERED:
22711 			case COLUMNSTORE:
22712 			case CONTENT:
22713 			case YEARS:
22714 			case MONTHS:
22715 			case WEEKS:
22716 			case DAYS:
22717 			case MINUTES:
22718 			case DENY:
22719 			case DETERMINISTIC:
22720 			case DISTRIBUTION:
22721 			case DOCUMENT:
22722 			case DURABILITY:
22723 			case ENCRYPTED:
22724 			case FILESTREAM:
22725 			case FILETABLE:
22726 			case FILLFACTOR:
22727 			case FOLLOWING:
22728 			case HASH:
22729 			case HEAP:
22730 			case INBOUND:
22731 			case OUTBOUND:
22732 			case UNBOUNDED:
22733 			case INFINITE:
22734 			case LOGIN:
22735 			case MASKED:
22736 			case MAXDOP:
22737 			case MOVE:
22738 			case NOCHECK:
22739 			case OBJECT:
22740 			case ONLINE:
22741 			case OVER:
22742 			case PAGE:
22743 			case PAUSED:
22744 			case PERIOD:
22745 			case PERSISTED:
22746 			case PRECEDING:
22747 			case RANDOMIZED:
22748 			case RANGE:
22749 			case REBUILD:
22750 			case REPLICATE:
22751 			case REPLICATION:
22752 			case RESUMABLE:
22753 			case ROWGUIDCOL:
22754 			case SAVE:
22755 			case SELF:
22756 			case SPARSE:
22757 			case SWITCH:
22758 			case TRAN:
22759 			case TRANCOUNT:
22760 			case CONTROL:
22761 			case CONCAT:
22762 			case TAKE:
22763 			case OWNERSHIP:
22764 			case DEFINITION:
22765 			case APPLICATION:
22766 			case ASSEMBLY:
22767 			case SYMMETRIC:
22768 			case ASYMMETRIC:
22769 			case SERVER:
22770 			case RECEIVE:
22771 			case CHANGE:
22772 			case TRACE:
22773 			case TRACKING:
22774 			case RESOURCES:
22775 			case SETTINGS:
22776 			case STATE:
22777 			case AVAILABILITY:
22778 			case CREDENTIAL:
22779 			case ENDPOINT:
22780 			case EVENT:
22781 			case NOTIFICATION:
22782 			case LINKED:
22783 			case AUDIT:
22784 			case DDL:
22785 			case XML:
22786 			case IMPERSONATE:
22787 			case SECURABLES:
22788 			case AUTHENTICATE:
22789 			case EXTERNAL:
22790 			case ACCESS:
22791 			case ADMINISTER:
22792 			case BULK:
22793 			case OPERATIONS:
22794 			case UNSAFE:
22795 			case SHUTDOWN:
22796 			case SCOPED:
22797 			case CONFIGURATION:
22798 			case DATASPACE:
22799 			case SERVICE:
22800 			case CERTIFICATE:
22801 			case CONTRACT:
22802 			case ENCRYPTION:
22803 			case MASTER:
22804 			case DATA:
22805 			case SOURCE:
22806 			case FILE:
22807 			case FORMAT:
22808 			case LIBRARY:
22809 			case FULLTEXT:
22810 			case MASK:
22811 			case UNMASK:
22812 			case MESSAGE:
22813 			case REMOTE:
22814 			case BINDING:
22815 			case ROUTE:
22816 			case SECURITY:
22817 			case POLICY:
22818 			case AGGREGATE:
22819 			case QUEUE:
22820 			case RULE:
22821 			case SYNONYM:
22822 			case COLLECTION:
22823 			case SCRIPT:
22824 			case KILL:
22825 			case BACKUP:
22826 			case LOG:
22827 			case SHOWPLAN:
22828 			case SUBSCRIBE:
22829 			case QUERY:
22830 			case NOTIFICATIONS:
22831 			case CHECKPOINT:
22832 			case SEQUENCE:
22833 			case ABORT_AFTER_WAIT:
22834 			case ALLOW_PAGE_LOCKS:
22835 			case ALLOW_ROW_LOCKS:
22836 			case ALL_SPARSE_COLUMNS:
22837 			case BUCKET_COUNT:
22838 			case COLUMNSTORE_ARCHIVE:
22839 			case COLUMN_ENCRYPTION_KEY:
22840 			case COLUMN_SET:
22841 			case COMPRESSION_DELAY:
22842 			case DATABASE_DEAULT:
22843 			case DATA_COMPRESSION:
22844 			case DATA_CONSISTENCY_CHECK:
22845 			case ENCRYPTION_TYPE:
22846 			case SYSTEM_TIME:
22847 			case SYSTEM_VERSIONING:
22848 			case TEXTIMAGE_ON:
22849 			case WAIT_AT_LOW_PRIORITY:
22850 			case STATISTICS_INCREMENTAL:
22851 			case STATISTICS_NORECOMPUTE:
22852 			case ROUND_ROBIN:
22853 			case SCHEMA_AND_DATA:
22854 			case SCHEMA_ONLY:
22855 			case SORT_IN_TEMPDB:
22856 			case IGNORE_DUP_KEY:
22857 			case IMPLICIT_TRANSACTIONS:
22858 			case MAX_DURATION:
22859 			case MEMORY_OPTIMIZED:
22860 			case MIGRATION_STATE:
22861 			case PAD_INDEX:
22862 			case REMOTE_DATA_ARCHIVE:
22863 			case FILESTREAM_ON:
22864 			case FILETABLE_COLLATE_FILENAME:
22865 			case FILETABLE_DIRECTORY:
22866 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
22867 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
22868 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
22869 			case FILTER_PREDICATE:
22870 			case HISTORY_RETENTION_PERIOD:
22871 			case HISTORY_TABLE:
22872 			case LOCK_ESCALATION:
22873 			case DROP_EXISTING:
22874 			case ROW_NUMBER:
22875 			case FIRST:
22876 			case DATETIME2:
22877 			case OUTPUT:
22878 			case INSERTED:
22879 			case DELETED:
22880 			case FILENAME:
22881 			case SIZE:
22882 			case MAXSIZE:
22883 			case FILEGROWTH:
22884 			case UNLIMITED:
22885 			case KB:
22886 			case MB:
22887 			case GB:
22888 			case TB:
22889 			case CONTAINS:
22890 			case MEMORY_OPTIMIZED_DATA:
22891 			case FILEGROUP:
22892 			case NON_TRANSACTED_ACCESS:
22893 			case DB_CHAINING:
22894 			case TRUSTWORTHY:
22895 			case FORWARD_ONLY:
22896 			case KEYSET:
22897 			case FAST_FORWARD:
22898 			case SCROLL_LOCKS:
22899 			case OPTIMISTIC:
22900 			case TYPE_WARNING:
22901 			case SCHEMABINDING:
22902 			case CALLER:
22903 			case INPUT:
22904 			case OWNER:
22905 			case SNAPSHOT:
22906 			case REPEATABLE:
22907 			case SERIALIZABLE:
22908 			case NATIVE_COMPILATION:
22909 			case VIEW_METADATA:
22910 			case INSTEAD:
22911 			case APPEND:
22912 			case INCREMENT:
22913 			case CACHE:
22914 			case MINVALUE:
22915 			case MAXVALUE:
22916 			case RESTART:
22917 			case LOB_COMPACTION:
22918 			case COMPRESS_ALL_ROW_GROUPS:
22919 			case REORGANIZE:
22920 			case RESUME:
22921 			case PAUSE:
22922 			case ABORT:
22923 			case ACCELERATED_DATABASE_RECOVERY:
22924 			case PERSISTENT_VERSION_STORE_FILEGROUP:
22925 			case IMMEDIATE:
22926 			case NO_WAIT:
22927 			case TARGET_RECOVERY_TIME:
22928 			case SECONDS:
22929 			case HONOR_BROKER_PRIORITY:
22930 			case ERROR_BROKER_CONVERSATIONS:
22931 			case NEW_BROKER:
22932 			case DISABLE_BROKER:
22933 			case ENABLE_BROKER:
22934 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
22935 			case READ_COMMITTED_SNAPSHOT:
22936 			case ALLOW_SNAPSHOT_ISOLATION:
22937 			case RECURSIVE_TRIGGERS:
22938 			case QUOTED_IDENTIFIER:
22939 			case NUMERIC_ROUNDABORT:
22940 			case CONCAT_NULL_YIELDS_NULL:
22941 			case COMPATIBILITY_LEVEL:
22942 			case ARITHABORT:
22943 			case ANSI_WARNINGS:
22944 			case ANSI_PADDING:
22945 			case ANSI_NULLS:
22946 			case ANSI_NULL_DEFAULT:
22947 			case PAGE_VERIFY:
22948 			case CHECKSUM:
22949 			case TORN_PAGE_DETECTION:
22950 			case BULK_LOGGED:
22951 			case RECOVERY:
22952 			case TOTAL_EXECUTION_CPU_TIME_MS:
22953 			case TOTAL_COMPILE_CPU_TIME_MS:
22954 			case STALE_CAPTURE_POLICY_THRESHOLD:
22955 			case EXECUTION_COUNT:
22956 			case QUERY_CAPTURE_POLICY:
22957 			case WAIT_STATS_CAPTURE_MODE:
22958 			case MAX_PLANS_PER_QUERY:
22959 			case QUERY_CAPTURE_MODE:
22960 			case SIZE_BASED_CLEANUP_MODE:
22961 			case INTERVAL_LENGTH_MINUTES:
22962 			case MAX_STORAGE_SIZE_MB:
22963 			case DATA_FLUSH_INTERVAL_SECONDS:
22964 			case CLEANUP_POLICY:
22965 			case CUSTOM:
22966 			case STALE_QUERY_THRESHOLD_DAYS:
22967 			case OPERATION_MODE:
22968 			case QUERY_STORE:
22969 			case CURSOR_DEFAULT:
22970 			case GLOBAL:
22971 			case CURSOR_CLOSE_ON_COMMIT:
22972 			case HOURS:
22973 			case CHANGE_RETENTION:
22974 			case AUTO_CLEANUP:
22975 			case CHANGE_TRACKING:
22976 			case AUTOMATIC_TUNING:
22977 			case FORCE_LAST_GOOD_PLAN:
22978 			case AUTO_UPDATE_STATISTICS_ASYNC:
22979 			case AUTO_UPDATE_STATISTICS:
22980 			case AUTO_SHRINK:
22981 			case AUTO_CREATE_STATISTICS:
22982 			case INCREMENTAL:
22983 			case AUTO_CLOSE:
22984 			case DATA_RETENTION:
22985 			case TEMPORAL_HISTORY_RETENTION:
22986 			case EDITION:
22987 			case MIXED_PAGE_ALLOCATION:
22988 			case DISABLED:
22989 			case ALLOWED:
22990 			case HADR:
22991 			case MULTI_USER:
22992 			case RESTRICTED_USER:
22993 			case SINGLE_USER:
22994 			case OFFLINE:
22995 			case EMERGENCY:
22996 			case SUSPEND:
22997 			case DATE_CORRELATION_OPTIMIZATION:
22998 			case ELASTIC_POOL:
22999 			case SERVICE_OBJECTIVE:
23000 			case DATABASE_NAME:
23001 			case ALLOW_CONNECTIONS:
23002 			case GEO:
23003 			case NAMED:
23004 			case DATEFIRST:
23005 			case BACKUP_STORAGE_REDUNDANCY:
23006 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
23007 			case SECONDARY:
23008 			case FAILOVER:
23009 			case DEFAULT_FULLTEXT_LANGUAGE:
23010 			case DEFAULT_LANGUAGE:
23011 			case INLINE:
23012 			case NESTED_TRIGGERS:
23013 			case TRANSFORM_NOISE_WORDS:
23014 			case TWO_DIGIT_YEAR_CUTOFF:
23015 			case PERSISTENT_LOG_BUFFER:
23016 			case DIRECTORY_NAME:
23017 			case DATEFORMAT:
23018 			case DELAYED_DURABILITY:
23019 			case AUTHORIZATION:
23020 			case TRANSFER:
23021 			case PROVIDER:
23022 			case SEARCH:
23023 			case MEMBER:
23024 			case IDENTIFIER_:
23025 			case DELIMITED_IDENTIFIER_:
23026 				{
23027 				setState(3319);
23028 				constraintName();
23029 				}
23030 				break;
23031 			default:
23032 				throw new NoViableAltException(this);
23033 			}
23034 			}
23035 		}
23036 		catch (RecognitionException re) {
23037 			_localctx.exception = re;
23038 			_errHandler.reportError(this, re);
23039 			_errHandler.recover(this, re);
23040 		}
23041 		finally {
23042 			exitRule();
23043 		}
23044 		return _localctx;
23045 	}
23046 
23047 	public static class AlterTableTriggerContext extends ParserRuleContext {
23048 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
23049 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
23050 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
23051 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
23052 		public IgnoredIdentifiersContext ignoredIdentifiers() {
23053 			return getRuleContext(IgnoredIdentifiersContext.class,0);
23054 		}
23055 		public AlterTableTriggerContext(ParserRuleContext parent, int invokingState) {
23056 			super(parent, invokingState);
23057 		}
23058 		@Override public int getRuleIndex() { return RULE_alterTableTrigger; }
23059 		@Override
23060 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23061 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTrigger(this);
23062 			else return visitor.visitChildren(this);
23063 		}
23064 	}
23065 
23066 	public final AlterTableTriggerContext alterTableTrigger() throws RecognitionException {
23067 		AlterTableTriggerContext _localctx = new AlterTableTriggerContext(_ctx, getState());
23068 		enterRule(_localctx, 484, RULE_alterTableTrigger);
23069 		int _la;
23070 		try {
23071 			enterOuterAlt(_localctx, 1);
23072 			{
23073 			setState(3322);
23074 			_la = _input.LA(1);
23075 			if ( !(_la==ENABLE || _la==DISABLE) ) {
23076 			_errHandler.recoverInline(this);
23077 			}
23078 			else {
23079 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23080 				_errHandler.reportMatch(this);
23081 				consume();
23082 			}
23083 			setState(3323);
23084 			match(TRIGGER);
23085 			setState(3326);
23086 			_errHandler.sync(this);
23087 			switch (_input.LA(1)) {
23088 			case ALL:
23089 				{
23090 				setState(3324);
23091 				match(ALL);
23092 				}
23093 				break;
23094 			case IDENTIFIER_:
23095 				{
23096 				setState(3325);
23097 				ignoredIdentifiers();
23098 				}
23099 				break;
23100 			default:
23101 				throw new NoViableAltException(this);
23102 			}
23103 			}
23104 		}
23105 		catch (RecognitionException re) {
23106 			_localctx.exception = re;
23107 			_errHandler.reportError(this, re);
23108 			_errHandler.recover(this, re);
23109 		}
23110 		finally {
23111 			exitRule();
23112 		}
23113 		return _localctx;
23114 	}
23115 
23116 	public static class AlterSwitchContext extends ParserRuleContext {
23117 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
23118 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
23119 		public TableNameContext tableName() {
23120 			return getRuleContext(TableNameContext.class,0);
23121 		}
23122 		public List<TerminalNode> PARTITION() { return getTokens(SQLServerStatementParser.PARTITION); }
23123 		public TerminalNode PARTITION(int i) {
23124 			return getToken(SQLServerStatementParser.PARTITION, i);
23125 		}
23126 		public List<ExprContext> expr() {
23127 			return getRuleContexts(ExprContext.class);
23128 		}
23129 		public ExprContext expr(int i) {
23130 			return getRuleContext(ExprContext.class,i);
23131 		}
23132 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
23133 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23134 		public LowPriorityLockWaitContext lowPriorityLockWait() {
23135 			return getRuleContext(LowPriorityLockWaitContext.class,0);
23136 		}
23137 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23138 		public AlterSwitchContext(ParserRuleContext parent, int invokingState) {
23139 			super(parent, invokingState);
23140 		}
23141 		@Override public int getRuleIndex() { return RULE_alterSwitch; }
23142 		@Override
23143 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23144 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSwitch(this);
23145 			else return visitor.visitChildren(this);
23146 		}
23147 	}
23148 
23149 	public final AlterSwitchContext alterSwitch() throws RecognitionException {
23150 		AlterSwitchContext _localctx = new AlterSwitchContext(_ctx, getState());
23151 		enterRule(_localctx, 486, RULE_alterSwitch);
23152 		int _la;
23153 		try {
23154 			enterOuterAlt(_localctx, 1);
23155 			{
23156 			setState(3328);
23157 			match(SWITCH);
23158 			setState(3331);
23159 			_errHandler.sync(this);
23160 			_la = _input.LA(1);
23161 			if (_la==PARTITION) {
23162 				{
23163 				setState(3329);
23164 				match(PARTITION);
23165 				setState(3330);
23166 				expr(0);
23167 				}
23168 			}
23169 
23170 			setState(3333);
23171 			match(TO);
23172 			setState(3334);
23173 			tableName();
23174 			setState(3337);
23175 			_errHandler.sync(this);
23176 			_la = _input.LA(1);
23177 			if (_la==PARTITION) {
23178 				{
23179 				setState(3335);
23180 				match(PARTITION);
23181 				setState(3336);
23182 				expr(0);
23183 				}
23184 			}
23185 
23186 			setState(3344);
23187 			_errHandler.sync(this);
23188 			switch ( getInterpreter().adaptivePredict(_input,306,_ctx) ) {
23189 			case 1:
23190 				{
23191 				setState(3339);
23192 				match(WITH);
23193 				setState(3340);
23194 				match(LP_);
23195 				setState(3341);
23196 				lowPriorityLockWait();
23197 				setState(3342);
23198 				match(RP_);
23199 				}
23200 				break;
23201 			}
23202 			}
23203 		}
23204 		catch (RecognitionException re) {
23205 			_localctx.exception = re;
23206 			_errHandler.reportError(this, re);
23207 			_errHandler.recover(this, re);
23208 		}
23209 		finally {
23210 			exitRule();
23211 		}
23212 		return _localctx;
23213 	}
23214 
23215 	public static class AlterSetContext extends ParserRuleContext {
23216 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
23217 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23218 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23219 		public SetFileStreamClauseContext setFileStreamClause() {
23220 			return getRuleContext(SetFileStreamClauseContext.class,0);
23221 		}
23222 		public SetSystemVersionClauseContext setSystemVersionClause() {
23223 			return getRuleContext(SetSystemVersionClauseContext.class,0);
23224 		}
23225 		public AlterSetContext(ParserRuleContext parent, int invokingState) {
23226 			super(parent, invokingState);
23227 		}
23228 		@Override public int getRuleIndex() { return RULE_alterSet; }
23229 		@Override
23230 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23231 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSet(this);
23232 			else return visitor.visitChildren(this);
23233 		}
23234 	}
23235 
23236 	public final AlterSetContext alterSet() throws RecognitionException {
23237 		AlterSetContext _localctx = new AlterSetContext(_ctx, getState());
23238 		enterRule(_localctx, 488, RULE_alterSet);
23239 		try {
23240 			enterOuterAlt(_localctx, 1);
23241 			{
23242 			setState(3346);
23243 			match(SET);
23244 			setState(3347);
23245 			match(LP_);
23246 			setState(3350);
23247 			_errHandler.sync(this);
23248 			switch (_input.LA(1)) {
23249 			case FILESTREAM_ON:
23250 				{
23251 				setState(3348);
23252 				setFileStreamClause();
23253 				}
23254 				break;
23255 			case SYSTEM_VERSIONING:
23256 				{
23257 				setState(3349);
23258 				setSystemVersionClause();
23259 				}
23260 				break;
23261 			default:
23262 				throw new NoViableAltException(this);
23263 			}
23264 			setState(3352);
23265 			match(RP_);
23266 			}
23267 		}
23268 		catch (RecognitionException re) {
23269 			_localctx.exception = re;
23270 			_errHandler.reportError(this, re);
23271 			_errHandler.recover(this, re);
23272 		}
23273 		finally {
23274 			exitRule();
23275 		}
23276 		return _localctx;
23277 	}
23278 
23279 	public static class SetFileStreamClauseContext extends ParserRuleContext {
23280 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
23281 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23282 		public SchemaNameContext schemaName() {
23283 			return getRuleContext(SchemaNameContext.class,0);
23284 		}
23285 		public IgnoredIdentifierContext ignoredIdentifier() {
23286 			return getRuleContext(IgnoredIdentifierContext.class,0);
23287 		}
23288 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
23289 		public SetFileStreamClauseContext(ParserRuleContext parent, int invokingState) {
23290 			super(parent, invokingState);
23291 		}
23292 		@Override public int getRuleIndex() { return RULE_setFileStreamClause; }
23293 		@Override
23294 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23295 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetFileStreamClause(this);
23296 			else return visitor.visitChildren(this);
23297 		}
23298 	}
23299 
23300 	public final SetFileStreamClauseContext setFileStreamClause() throws RecognitionException {
23301 		SetFileStreamClauseContext _localctx = new SetFileStreamClauseContext(_ctx, getState());
23302 		enterRule(_localctx, 490, RULE_setFileStreamClause);
23303 		try {
23304 			enterOuterAlt(_localctx, 1);
23305 			{
23306 			setState(3354);
23307 			match(FILESTREAM_ON);
23308 			setState(3355);
23309 			match(EQ_);
23310 			setState(3359);
23311 			_errHandler.sync(this);
23312 			switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) {
23313 			case 1:
23314 				{
23315 				setState(3356);
23316 				schemaName();
23317 				}
23318 				break;
23319 			case 2:
23320 				{
23321 				setState(3357);
23322 				ignoredIdentifier();
23323 				}
23324 				break;
23325 			case 3:
23326 				{
23327 				setState(3358);
23328 				match(STRING_);
23329 				}
23330 				break;
23331 			}
23332 			}
23333 		}
23334 		catch (RecognitionException re) {
23335 			_localctx.exception = re;
23336 			_errHandler.reportError(this, re);
23337 			_errHandler.recover(this, re);
23338 		}
23339 		finally {
23340 			exitRule();
23341 		}
23342 		return _localctx;
23343 	}
23344 
23345 	public static class SetSystemVersionClauseContext extends ParserRuleContext {
23346 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
23347 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23348 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
23349 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23350 		public AlterSetOnClauseContext alterSetOnClause() {
23351 			return getRuleContext(AlterSetOnClauseContext.class,0);
23352 		}
23353 		public SetSystemVersionClauseContext(ParserRuleContext parent, int invokingState) {
23354 			super(parent, invokingState);
23355 		}
23356 		@Override public int getRuleIndex() { return RULE_setSystemVersionClause; }
23357 		@Override
23358 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23359 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetSystemVersionClause(this);
23360 			else return visitor.visitChildren(this);
23361 		}
23362 	}
23363 
23364 	public final SetSystemVersionClauseContext setSystemVersionClause() throws RecognitionException {
23365 		SetSystemVersionClauseContext _localctx = new SetSystemVersionClauseContext(_ctx, getState());
23366 		enterRule(_localctx, 492, RULE_setSystemVersionClause);
23367 		int _la;
23368 		try {
23369 			enterOuterAlt(_localctx, 1);
23370 			{
23371 			setState(3361);
23372 			match(SYSTEM_VERSIONING);
23373 			setState(3362);
23374 			match(EQ_);
23375 			setState(3368);
23376 			_errHandler.sync(this);
23377 			switch (_input.LA(1)) {
23378 			case OFF:
23379 				{
23380 				setState(3363);
23381 				match(OFF);
23382 				}
23383 				break;
23384 			case ON:
23385 				{
23386 				setState(3364);
23387 				match(ON);
23388 				setState(3366);
23389 				_errHandler.sync(this);
23390 				_la = _input.LA(1);
23391 				if (_la==LP_) {
23392 					{
23393 					setState(3365);
23394 					alterSetOnClause();
23395 					}
23396 				}
23397 
23398 				}
23399 				break;
23400 			default:
23401 				throw new NoViableAltException(this);
23402 			}
23403 			}
23404 		}
23405 		catch (RecognitionException re) {
23406 			_localctx.exception = re;
23407 			_errHandler.reportError(this, re);
23408 			_errHandler.recover(this, re);
23409 		}
23410 		finally {
23411 			exitRule();
23412 		}
23413 		return _localctx;
23414 	}
23415 
23416 	public static class AlterSetOnClauseContext extends ParserRuleContext {
23417 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23418 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23419 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
23420 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23421 		public TableNameContext tableName() {
23422 			return getRuleContext(TableNameContext.class,0);
23423 		}
23424 		public DataConsistencyCheckClauseContext dataConsistencyCheckClause() {
23425 			return getRuleContext(DataConsistencyCheckClauseContext.class,0);
23426 		}
23427 		public HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() {
23428 			return getRuleContext(HistoryRetentionPeriodClauseContext.class,0);
23429 		}
23430 		public AlterSetOnClauseContext(ParserRuleContext parent, int invokingState) {
23431 			super(parent, invokingState);
23432 		}
23433 		@Override public int getRuleIndex() { return RULE_alterSetOnClause; }
23434 		@Override
23435 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23436 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSetOnClause(this);
23437 			else return visitor.visitChildren(this);
23438 		}
23439 	}
23440 
23441 	public final AlterSetOnClauseContext alterSetOnClause() throws RecognitionException {
23442 		AlterSetOnClauseContext _localctx = new AlterSetOnClauseContext(_ctx, getState());
23443 		enterRule(_localctx, 494, RULE_alterSetOnClause);
23444 		int _la;
23445 		try {
23446 			enterOuterAlt(_localctx, 1);
23447 			{
23448 			setState(3370);
23449 			match(LP_);
23450 			setState(3374);
23451 			_errHandler.sync(this);
23452 			_la = _input.LA(1);
23453 			if (_la==HISTORY_TABLE) {
23454 				{
23455 				setState(3371);
23456 				match(HISTORY_TABLE);
23457 				setState(3372);
23458 				match(EQ_);
23459 				setState(3373);
23460 				tableName();
23461 				}
23462 			}
23463 
23464 			setState(3377);
23465 			_errHandler.sync(this);
23466 			switch ( getInterpreter().adaptivePredict(_input,312,_ctx) ) {
23467 			case 1:
23468 				{
23469 				setState(3376);
23470 				dataConsistencyCheckClause();
23471 				}
23472 				break;
23473 			}
23474 			setState(3380);
23475 			_errHandler.sync(this);
23476 			_la = _input.LA(1);
23477 			if (_la==COMMA_ || _la==HISTORY_RETENTION_PERIOD) {
23478 				{
23479 				setState(3379);
23480 				historyRetentionPeriodClause();
23481 				}
23482 			}
23483 
23484 			setState(3382);
23485 			match(RP_);
23486 			}
23487 		}
23488 		catch (RecognitionException re) {
23489 			_localctx.exception = re;
23490 			_errHandler.reportError(this, re);
23491 			_errHandler.recover(this, re);
23492 		}
23493 		finally {
23494 			exitRule();
23495 		}
23496 		return _localctx;
23497 	}
23498 
23499 	public static class DataConsistencyCheckClauseContext extends ParserRuleContext {
23500 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
23501 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23502 		public OnOffOptionContext onOffOption() {
23503 			return getRuleContext(OnOffOptionContext.class,0);
23504 		}
23505 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23506 		public DataConsistencyCheckClauseContext(ParserRuleContext parent, int invokingState) {
23507 			super(parent, invokingState);
23508 		}
23509 		@Override public int getRuleIndex() { return RULE_dataConsistencyCheckClause; }
23510 		@Override
23511 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23512 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataConsistencyCheckClause(this);
23513 			else return visitor.visitChildren(this);
23514 		}
23515 	}
23516 
23517 	public final DataConsistencyCheckClauseContext dataConsistencyCheckClause() throws RecognitionException {
23518 		DataConsistencyCheckClauseContext _localctx = new DataConsistencyCheckClauseContext(_ctx, getState());
23519 		enterRule(_localctx, 496, RULE_dataConsistencyCheckClause);
23520 		int _la;
23521 		try {
23522 			enterOuterAlt(_localctx, 1);
23523 			{
23524 			setState(3385);
23525 			_errHandler.sync(this);
23526 			_la = _input.LA(1);
23527 			if (_la==COMMA_) {
23528 				{
23529 				setState(3384);
23530 				match(COMMA_);
23531 				}
23532 			}
23533 
23534 			setState(3387);
23535 			match(DATA_CONSISTENCY_CHECK);
23536 			setState(3388);
23537 			match(EQ_);
23538 			setState(3389);
23539 			onOffOption();
23540 			}
23541 		}
23542 		catch (RecognitionException re) {
23543 			_localctx.exception = re;
23544 			_errHandler.reportError(this, re);
23545 			_errHandler.recover(this, re);
23546 		}
23547 		finally {
23548 			exitRule();
23549 		}
23550 		return _localctx;
23551 	}
23552 
23553 	public static class HistoryRetentionPeriodClauseContext extends ParserRuleContext {
23554 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
23555 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23556 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
23557 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
23558 		}
23559 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23560 		public HistoryRetentionPeriodClauseContext(ParserRuleContext parent, int invokingState) {
23561 			super(parent, invokingState);
23562 		}
23563 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriodClause; }
23564 		@Override
23565 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23566 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriodClause(this);
23567 			else return visitor.visitChildren(this);
23568 		}
23569 	}
23570 
23571 	public final HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() throws RecognitionException {
23572 		HistoryRetentionPeriodClauseContext _localctx = new HistoryRetentionPeriodClauseContext(_ctx, getState());
23573 		enterRule(_localctx, 498, RULE_historyRetentionPeriodClause);
23574 		int _la;
23575 		try {
23576 			enterOuterAlt(_localctx, 1);
23577 			{
23578 			setState(3392);
23579 			_errHandler.sync(this);
23580 			_la = _input.LA(1);
23581 			if (_la==COMMA_) {
23582 				{
23583 				setState(3391);
23584 				match(COMMA_);
23585 				}
23586 			}
23587 
23588 			setState(3394);
23589 			match(HISTORY_RETENTION_PERIOD);
23590 			setState(3395);
23591 			match(EQ_);
23592 			setState(3396);
23593 			historyRetentionPeriod();
23594 			}
23595 		}
23596 		catch (RecognitionException re) {
23597 			_localctx.exception = re;
23598 			_errHandler.reportError(this, re);
23599 			_errHandler.recover(this, re);
23600 		}
23601 		finally {
23602 			exitRule();
23603 		}
23604 		return _localctx;
23605 	}
23606 
23607 	public static class HistoryRetentionPeriodContext extends ParserRuleContext {
23608 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
23609 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
23610 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
23611 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
23612 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
23613 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
23614 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
23615 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
23616 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
23617 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
23618 		public HistoryRetentionPeriodContext(ParserRuleContext parent, int invokingState) {
23619 			super(parent, invokingState);
23620 		}
23621 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriod; }
23622 		@Override
23623 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23624 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriod(this);
23625 			else return visitor.visitChildren(this);
23626 		}
23627 	}
23628 
23629 	public final HistoryRetentionPeriodContext historyRetentionPeriod() throws RecognitionException {
23630 		HistoryRetentionPeriodContext _localctx = new HistoryRetentionPeriodContext(_ctx, getState());
23631 		enterRule(_localctx, 500, RULE_historyRetentionPeriod);
23632 		int _la;
23633 		try {
23634 			setState(3401);
23635 			_errHandler.sync(this);
23636 			switch (_input.LA(1)) {
23637 			case INFINITE:
23638 				enterOuterAlt(_localctx, 1);
23639 				{
23640 				setState(3398);
23641 				match(INFINITE);
23642 				}
23643 				break;
23644 			case NUMBER_:
23645 				enterOuterAlt(_localctx, 2);
23646 				{
23647 				{
23648 				setState(3399);
23649 				match(NUMBER_);
23650 				setState(3400);
23651 				_la = _input.LA(1);
23652 				if ( !(((((_la - 140)) & ~0x3f) == 0 && ((1L << (_la - 140)) & ((1L << (YEAR - 140)) | (1L << (MONTH - 140)) | (1L << (WEEK - 140)) | (1L << (DAY - 140)))) != 0) || ((((_la - 274)) & ~0x3f) == 0 && ((1L << (_la - 274)) & ((1L << (YEARS - 274)) | (1L << (MONTHS - 274)) | (1L << (WEEKS - 274)) | (1L << (DAYS - 274)))) != 0)) ) {
23653 				_errHandler.recoverInline(this);
23654 				}
23655 				else {
23656 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23657 					_errHandler.reportMatch(this);
23658 					consume();
23659 				}
23660 				}
23661 				}
23662 				break;
23663 			default:
23664 				throw new NoViableAltException(this);
23665 			}
23666 		}
23667 		catch (RecognitionException re) {
23668 			_localctx.exception = re;
23669 			_errHandler.reportError(this, re);
23670 			_errHandler.recover(this, re);
23671 		}
23672 		finally {
23673 			exitRule();
23674 		}
23675 		return _localctx;
23676 	}
23677 
23678 	public static class AlterTableTableIndexContext extends ParserRuleContext {
23679 		public IndexWithNameContext indexWithName() {
23680 			return getRuleContext(IndexWithNameContext.class,0);
23681 		}
23682 		public IndexNonClusterClauseContext indexNonClusterClause() {
23683 			return getRuleContext(IndexNonClusterClauseContext.class,0);
23684 		}
23685 		public IndexClusterClauseContext indexClusterClause() {
23686 			return getRuleContext(IndexClusterClauseContext.class,0);
23687 		}
23688 		public AlterTableTableIndexContext(ParserRuleContext parent, int invokingState) {
23689 			super(parent, invokingState);
23690 		}
23691 		@Override public int getRuleIndex() { return RULE_alterTableTableIndex; }
23692 		@Override
23693 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23694 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTableIndex(this);
23695 			else return visitor.visitChildren(this);
23696 		}
23697 	}
23698 
23699 	public final AlterTableTableIndexContext alterTableTableIndex() throws RecognitionException {
23700 		AlterTableTableIndexContext _localctx = new AlterTableTableIndexContext(_ctx, getState());
23701 		enterRule(_localctx, 502, RULE_alterTableTableIndex);
23702 		try {
23703 			enterOuterAlt(_localctx, 1);
23704 			{
23705 			setState(3403);
23706 			indexWithName();
23707 			setState(3406);
23708 			_errHandler.sync(this);
23709 			switch (_input.LA(1)) {
23710 			case NONCLUSTERED:
23711 				{
23712 				setState(3404);
23713 				indexNonClusterClause();
23714 				}
23715 				break;
23716 			case CLUSTERED:
23717 				{
23718 				setState(3405);
23719 				indexClusterClause();
23720 				}
23721 				break;
23722 			default:
23723 				throw new NoViableAltException(this);
23724 			}
23725 			}
23726 		}
23727 		catch (RecognitionException re) {
23728 			_localctx.exception = re;
23729 			_errHandler.reportError(this, re);
23730 			_errHandler.recover(this, re);
23731 		}
23732 		finally {
23733 			exitRule();
23734 		}
23735 		return _localctx;
23736 	}
23737 
23738 	public static class IndexWithNameContext extends ParserRuleContext {
23739 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
23740 		public IndexNameContext indexName() {
23741 			return getRuleContext(IndexNameContext.class,0);
23742 		}
23743 		public IndexWithNameContext(ParserRuleContext parent, int invokingState) {
23744 			super(parent, invokingState);
23745 		}
23746 		@Override public int getRuleIndex() { return RULE_indexWithName; }
23747 		@Override
23748 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23749 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexWithName(this);
23750 			else return visitor.visitChildren(this);
23751 		}
23752 	}
23753 
23754 	public final IndexWithNameContext indexWithName() throws RecognitionException {
23755 		IndexWithNameContext _localctx = new IndexWithNameContext(_ctx, getState());
23756 		enterRule(_localctx, 504, RULE_indexWithName);
23757 		try {
23758 			enterOuterAlt(_localctx, 1);
23759 			{
23760 			setState(3408);
23761 			match(INDEX);
23762 			setState(3409);
23763 			indexName();
23764 			}
23765 		}
23766 		catch (RecognitionException re) {
23767 			_localctx.exception = re;
23768 			_errHandler.reportError(this, re);
23769 			_errHandler.recover(this, re);
23770 		}
23771 		finally {
23772 			exitRule();
23773 		}
23774 		return _localctx;
23775 	}
23776 
23777 	public static class IndexNonClusterClauseContext extends ParserRuleContext {
23778 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
23779 		public HashWithBucketContext hashWithBucket() {
23780 			return getRuleContext(HashWithBucketContext.class,0);
23781 		}
23782 		public ColumnNamesWithSortContext columnNamesWithSort() {
23783 			return getRuleContext(ColumnNamesWithSortContext.class,0);
23784 		}
23785 		public AlterTableIndexOnClauseContext alterTableIndexOnClause() {
23786 			return getRuleContext(AlterTableIndexOnClauseContext.class,0);
23787 		}
23788 		public IndexNonClusterClauseContext(ParserRuleContext parent, int invokingState) {
23789 			super(parent, invokingState);
23790 		}
23791 		@Override public int getRuleIndex() { return RULE_indexNonClusterClause; }
23792 		@Override
23793 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23794 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNonClusterClause(this);
23795 			else return visitor.visitChildren(this);
23796 		}
23797 	}
23798 
23799 	public final IndexNonClusterClauseContext indexNonClusterClause() throws RecognitionException {
23800 		IndexNonClusterClauseContext _localctx = new IndexNonClusterClauseContext(_ctx, getState());
23801 		enterRule(_localctx, 506, RULE_indexNonClusterClause);
23802 		int _la;
23803 		try {
23804 			enterOuterAlt(_localctx, 1);
23805 			{
23806 			setState(3411);
23807 			match(NONCLUSTERED);
23808 			setState(3417);
23809 			_errHandler.sync(this);
23810 			switch (_input.LA(1)) {
23811 			case HASH:
23812 				{
23813 				setState(3412);
23814 				hashWithBucket();
23815 				}
23816 				break;
23817 			case LP_:
23818 				{
23819 				setState(3413);
23820 				columnNamesWithSort();
23821 				setState(3415);
23822 				_errHandler.sync(this);
23823 				_la = _input.LA(1);
23824 				if (_la==ON || _la==DEFAULT) {
23825 					{
23826 					setState(3414);
23827 					alterTableIndexOnClause();
23828 					}
23829 				}
23830 
23831 				}
23832 				break;
23833 			default:
23834 				throw new NoViableAltException(this);
23835 			}
23836 			}
23837 		}
23838 		catch (RecognitionException re) {
23839 			_localctx.exception = re;
23840 			_errHandler.reportError(this, re);
23841 			_errHandler.recover(this, re);
23842 		}
23843 		finally {
23844 			exitRule();
23845 		}
23846 		return _localctx;
23847 	}
23848 
23849 	public static class AlterTableIndexOnClauseContext extends ParserRuleContext {
23850 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23851 		public IgnoredIdentifierContext ignoredIdentifier() {
23852 			return getRuleContext(IgnoredIdentifierContext.class,0);
23853 		}
23854 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
23855 		public AlterTableIndexOnClauseContext(ParserRuleContext parent, int invokingState) {
23856 			super(parent, invokingState);
23857 		}
23858 		@Override public int getRuleIndex() { return RULE_alterTableIndexOnClause; }
23859 		@Override
23860 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23861 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableIndexOnClause(this);
23862 			else return visitor.visitChildren(this);
23863 		}
23864 	}
23865 
23866 	public final AlterTableIndexOnClauseContext alterTableIndexOnClause() throws RecognitionException {
23867 		AlterTableIndexOnClauseContext _localctx = new AlterTableIndexOnClauseContext(_ctx, getState());
23868 		enterRule(_localctx, 508, RULE_alterTableIndexOnClause);
23869 		try {
23870 			setState(3422);
23871 			_errHandler.sync(this);
23872 			switch (_input.LA(1)) {
23873 			case ON:
23874 				enterOuterAlt(_localctx, 1);
23875 				{
23876 				setState(3419);
23877 				match(ON);
23878 				setState(3420);
23879 				ignoredIdentifier();
23880 				}
23881 				break;
23882 			case DEFAULT:
23883 				enterOuterAlt(_localctx, 2);
23884 				{
23885 				setState(3421);
23886 				match(DEFAULT);
23887 				}
23888 				break;
23889 			default:
23890 				throw new NoViableAltException(this);
23891 			}
23892 		}
23893 		catch (RecognitionException re) {
23894 			_localctx.exception = re;
23895 			_errHandler.reportError(this, re);
23896 			_errHandler.recover(this, re);
23897 		}
23898 		finally {
23899 			exitRule();
23900 		}
23901 		return _localctx;
23902 	}
23903 
23904 	public static class IndexClusterClauseContext extends ParserRuleContext {
23905 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
23906 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
23907 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
23908 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
23909 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23910 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
23911 		public IndexOnClauseContext indexOnClause() {
23912 			return getRuleContext(IndexOnClauseContext.class,0);
23913 		}
23914 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
23915 		public IndexClusterClauseContext(ParserRuleContext parent, int invokingState) {
23916 			super(parent, invokingState);
23917 		}
23918 		@Override public int getRuleIndex() { return RULE_indexClusterClause; }
23919 		@Override
23920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexClusterClause(this);
23922 			else return visitor.visitChildren(this);
23923 		}
23924 	}
23925 
23926 	public final IndexClusterClauseContext indexClusterClause() throws RecognitionException {
23927 		IndexClusterClauseContext _localctx = new IndexClusterClauseContext(_ctx, getState());
23928 		enterRule(_localctx, 510, RULE_indexClusterClause);
23929 		int _la;
23930 		try {
23931 			enterOuterAlt(_localctx, 1);
23932 			{
23933 			setState(3424);
23934 			match(CLUSTERED);
23935 			setState(3425);
23936 			match(COLUMNSTORE);
23937 			setState(3433);
23938 			_errHandler.sync(this);
23939 			switch ( getInterpreter().adaptivePredict(_input,322,_ctx) ) {
23940 			case 1:
23941 				{
23942 				setState(3426);
23943 				match(WITH);
23944 				setState(3427);
23945 				match(COMPRESSION_DELAY);
23946 				setState(3428);
23947 				match(EQ_);
23948 				setState(3429);
23949 				match(NUMBER_);
23950 				setState(3431);
23951 				_errHandler.sync(this);
23952 				_la = _input.LA(1);
23953 				if (_la==MINUTES) {
23954 					{
23955 					setState(3430);
23956 					match(MINUTES);
23957 					}
23958 				}
23959 
23960 				}
23961 				break;
23962 			}
23963 			setState(3436);
23964 			_errHandler.sync(this);
23965 			_la = _input.LA(1);
23966 			if (_la==ON) {
23967 				{
23968 				setState(3435);
23969 				indexOnClause();
23970 				}
23971 			}
23972 
23973 			}
23974 		}
23975 		catch (RecognitionException re) {
23976 			_localctx.exception = re;
23977 			_errHandler.reportError(this, re);
23978 			_errHandler.recover(this, re);
23979 		}
23980 		finally {
23981 			exitRule();
23982 		}
23983 		return _localctx;
23984 	}
23985 
23986 	public static class AlterTableOptionContext extends ParserRuleContext {
23987 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
23988 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23989 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
23990 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23991 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23992 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
23993 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
23994 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
23995 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
23996 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23997 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
23998 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
23999 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
24000 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
24001 		public OnHistoryTableClauseContext onHistoryTableClause() {
24002 			return getRuleContext(OnHistoryTableClauseContext.class,0);
24003 		}
24004 		public AlterTableOptionContext(ParserRuleContext parent, int invokingState) {
24005 			super(parent, invokingState);
24006 		}
24007 		@Override public int getRuleIndex() { return RULE_alterTableOption; }
24008 		@Override
24009 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24010 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableOption(this);
24011 			else return visitor.visitChildren(this);
24012 		}
24013 	}
24014 
24015 	public final AlterTableOptionContext alterTableOption() throws RecognitionException {
24016 		AlterTableOptionContext _localctx = new AlterTableOptionContext(_ctx, getState());
24017 		enterRule(_localctx, 512, RULE_alterTableOption);
24018 		int _la;
24019 		try {
24020 			setState(3456);
24021 			_errHandler.sync(this);
24022 			switch (_input.LA(1)) {
24023 			case SET:
24024 				enterOuterAlt(_localctx, 1);
24025 				{
24026 				setState(3438);
24027 				match(SET);
24028 				setState(3439);
24029 				match(LP_);
24030 				setState(3440);
24031 				match(LOCK_ESCALATION);
24032 				setState(3441);
24033 				match(EQ_);
24034 				setState(3442);
24035 				_la = _input.LA(1);
24036 				if ( !(_la==TABLE || _la==DISABLE || _la==AUTO) ) {
24037 				_errHandler.recoverInline(this);
24038 				}
24039 				else {
24040 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24041 					_errHandler.reportMatch(this);
24042 					consume();
24043 				}
24044 				setState(3443);
24045 				match(RP_);
24046 				}
24047 				break;
24048 			case MEMORY_OPTIMIZED:
24049 				enterOuterAlt(_localctx, 2);
24050 				{
24051 				setState(3444);
24052 				match(MEMORY_OPTIMIZED);
24053 				setState(3445);
24054 				match(EQ_);
24055 				setState(3446);
24056 				match(ON);
24057 				}
24058 				break;
24059 			case DURABILITY:
24060 				enterOuterAlt(_localctx, 3);
24061 				{
24062 				setState(3447);
24063 				match(DURABILITY);
24064 				setState(3448);
24065 				match(EQ_);
24066 				setState(3449);
24067 				_la = _input.LA(1);
24068 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
24069 				_errHandler.recoverInline(this);
24070 				}
24071 				else {
24072 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24073 					_errHandler.reportMatch(this);
24074 					consume();
24075 				}
24076 				}
24077 				break;
24078 			case SYSTEM_VERSIONING:
24079 				enterOuterAlt(_localctx, 4);
24080 				{
24081 				setState(3450);
24082 				match(SYSTEM_VERSIONING);
24083 				setState(3451);
24084 				match(EQ_);
24085 				setState(3452);
24086 				match(ON);
24087 				setState(3454);
24088 				_errHandler.sync(this);
24089 				_la = _input.LA(1);
24090 				if (_la==LP_) {
24091 					{
24092 					setState(3453);
24093 					onHistoryTableClause();
24094 					}
24095 				}
24096 
24097 				}
24098 				break;
24099 			default:
24100 				throw new NoViableAltException(this);
24101 			}
24102 		}
24103 		catch (RecognitionException re) {
24104 			_localctx.exception = re;
24105 			_errHandler.reportError(this, re);
24106 			_errHandler.recover(this, re);
24107 		}
24108 		finally {
24109 			exitRule();
24110 		}
24111 		return _localctx;
24112 	}
24113 
24114 	public static class OnHistoryTableClauseContext extends ParserRuleContext {
24115 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24116 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
24117 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24118 		public TerminalNode EQ_(int i) {
24119 			return getToken(SQLServerStatementParser.EQ_, i);
24120 		}
24121 		public TableNameContext tableName() {
24122 			return getRuleContext(TableNameContext.class,0);
24123 		}
24124 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24125 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
24126 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
24127 		public OnOffOptionContext onOffOption() {
24128 			return getRuleContext(OnOffOptionContext.class,0);
24129 		}
24130 		public OnHistoryTableClauseContext(ParserRuleContext parent, int invokingState) {
24131 			super(parent, invokingState);
24132 		}
24133 		@Override public int getRuleIndex() { return RULE_onHistoryTableClause; }
24134 		@Override
24135 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24136 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnHistoryTableClause(this);
24137 			else return visitor.visitChildren(this);
24138 		}
24139 	}
24140 
24141 	public final OnHistoryTableClauseContext onHistoryTableClause() throws RecognitionException {
24142 		OnHistoryTableClauseContext _localctx = new OnHistoryTableClauseContext(_ctx, getState());
24143 		enterRule(_localctx, 514, RULE_onHistoryTableClause);
24144 		int _la;
24145 		try {
24146 			enterOuterAlt(_localctx, 1);
24147 			{
24148 			setState(3458);
24149 			match(LP_);
24150 			setState(3459);
24151 			match(HISTORY_TABLE);
24152 			setState(3460);
24153 			match(EQ_);
24154 			setState(3461);
24155 			tableName();
24156 			setState(3466);
24157 			_errHandler.sync(this);
24158 			_la = _input.LA(1);
24159 			if (_la==COMMA_) {
24160 				{
24161 				setState(3462);
24162 				match(COMMA_);
24163 				setState(3463);
24164 				match(DATA_CONSISTENCY_CHECK);
24165 				setState(3464);
24166 				match(EQ_);
24167 				setState(3465);
24168 				onOffOption();
24169 				}
24170 			}
24171 
24172 			setState(3468);
24173 			match(RP_);
24174 			}
24175 		}
24176 		catch (RecognitionException re) {
24177 			_localctx.exception = re;
24178 			_errHandler.reportError(this, re);
24179 			_errHandler.recover(this, re);
24180 		}
24181 		finally {
24182 			exitRule();
24183 		}
24184 		return _localctx;
24185 	}
24186 
24187 	public static class CreateDatabaseClauseContext extends ParserRuleContext {
24188 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
24189 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24190 		public FileDefinitionClauseContext fileDefinitionClause() {
24191 			return getRuleContext(FileDefinitionClauseContext.class,0);
24192 		}
24193 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
24194 		public IgnoredIdentifierContext ignoredIdentifier() {
24195 			return getRuleContext(IgnoredIdentifierContext.class,0);
24196 		}
24197 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
24198 		public List<DatabaseOptionContext> databaseOption() {
24199 			return getRuleContexts(DatabaseOptionContext.class);
24200 		}
24201 		public DatabaseOptionContext databaseOption(int i) {
24202 			return getRuleContext(DatabaseOptionContext.class,i);
24203 		}
24204 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
24205 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
24206 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24207 		public TerminalNode COMMA_(int i) {
24208 			return getToken(SQLServerStatementParser.COMMA_, i);
24209 		}
24210 		public CreateDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
24211 			super(parent, invokingState);
24212 		}
24213 		@Override public int getRuleIndex() { return RULE_createDatabaseClause; }
24214 		@Override
24215 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24216 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabaseClause(this);
24217 			else return visitor.visitChildren(this);
24218 		}
24219 	}
24220 
24221 	public final CreateDatabaseClauseContext createDatabaseClause() throws RecognitionException {
24222 		CreateDatabaseClauseContext _localctx = new CreateDatabaseClauseContext(_ctx, getState());
24223 		enterRule(_localctx, 516, RULE_createDatabaseClause);
24224 		int _la;
24225 		try {
24226 			enterOuterAlt(_localctx, 1);
24227 			{
24228 			setState(3473);
24229 			_errHandler.sync(this);
24230 			_la = _input.LA(1);
24231 			if (_la==CONTAINMENT) {
24232 				{
24233 				setState(3470);
24234 				match(CONTAINMENT);
24235 				setState(3471);
24236 				match(EQ_);
24237 				setState(3472);
24238 				_la = _input.LA(1);
24239 				if ( !(_la==NONE || _la==PARTIAL) ) {
24240 				_errHandler.recoverInline(this);
24241 				}
24242 				else {
24243 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24244 					_errHandler.reportMatch(this);
24245 					consume();
24246 				}
24247 				}
24248 			}
24249 
24250 			setState(3476);
24251 			_errHandler.sync(this);
24252 			_la = _input.LA(1);
24253 			if (_la==ON) {
24254 				{
24255 				setState(3475);
24256 				fileDefinitionClause();
24257 				}
24258 			}
24259 
24260 			setState(3480);
24261 			_errHandler.sync(this);
24262 			_la = _input.LA(1);
24263 			if (_la==COLLATE) {
24264 				{
24265 				setState(3478);
24266 				match(COLLATE);
24267 				setState(3479);
24268 				ignoredIdentifier();
24269 				}
24270 			}
24271 
24272 			setState(3491);
24273 			_errHandler.sync(this);
24274 			_la = _input.LA(1);
24275 			if (_la==WITH) {
24276 				{
24277 				setState(3482);
24278 				match(WITH);
24279 				setState(3483);
24280 				databaseOption();
24281 				setState(3488);
24282 				_errHandler.sync(this);
24283 				_la = _input.LA(1);
24284 				while (_la==COMMA_) {
24285 					{
24286 					{
24287 					setState(3484);
24288 					match(COMMA_);
24289 					setState(3485);
24290 					databaseOption();
24291 					}
24292 					}
24293 					setState(3490);
24294 					_errHandler.sync(this);
24295 					_la = _input.LA(1);
24296 				}
24297 				}
24298 			}
24299 
24300 			}
24301 		}
24302 		catch (RecognitionException re) {
24303 			_localctx.exception = re;
24304 			_errHandler.reportError(this, re);
24305 			_errHandler.recover(this, re);
24306 		}
24307 		finally {
24308 			exitRule();
24309 		}
24310 		return _localctx;
24311 	}
24312 
24313 	public static class FileDefinitionClauseContext extends ParserRuleContext {
24314 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24315 		public List<FileSpecContext> fileSpec() {
24316 			return getRuleContexts(FileSpecContext.class);
24317 		}
24318 		public FileSpecContext fileSpec(int i) {
24319 			return getRuleContext(FileSpecContext.class,i);
24320 		}
24321 		public DatabaseLogOnsContext databaseLogOns() {
24322 			return getRuleContext(DatabaseLogOnsContext.class,0);
24323 		}
24324 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
24325 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24326 		public TerminalNode COMMA_(int i) {
24327 			return getToken(SQLServerStatementParser.COMMA_, i);
24328 		}
24329 		public List<DatabaseFileGroupContext> databaseFileGroup() {
24330 			return getRuleContexts(DatabaseFileGroupContext.class);
24331 		}
24332 		public DatabaseFileGroupContext databaseFileGroup(int i) {
24333 			return getRuleContext(DatabaseFileGroupContext.class,i);
24334 		}
24335 		public FileDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
24336 			super(parent, invokingState);
24337 		}
24338 		@Override public int getRuleIndex() { return RULE_fileDefinitionClause; }
24339 		@Override
24340 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24341 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileDefinitionClause(this);
24342 			else return visitor.visitChildren(this);
24343 		}
24344 	}
24345 
24346 	public final FileDefinitionClauseContext fileDefinitionClause() throws RecognitionException {
24347 		FileDefinitionClauseContext _localctx = new FileDefinitionClauseContext(_ctx, getState());
24348 		enterRule(_localctx, 518, RULE_fileDefinitionClause);
24349 		int _la;
24350 		try {
24351 			int _alt;
24352 			enterOuterAlt(_localctx, 1);
24353 			{
24354 			setState(3493);
24355 			match(ON);
24356 			setState(3495);
24357 			_errHandler.sync(this);
24358 			_la = _input.LA(1);
24359 			if (_la==PRIMARY) {
24360 				{
24361 				setState(3494);
24362 				match(PRIMARY);
24363 				}
24364 			}
24365 
24366 			setState(3497);
24367 			fileSpec();
24368 			setState(3502);
24369 			_errHandler.sync(this);
24370 			_alt = getInterpreter().adaptivePredict(_input,333,_ctx);
24371 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
24372 				if ( _alt==1 ) {
24373 					{
24374 					{
24375 					setState(3498);
24376 					match(COMMA_);
24377 					setState(3499);
24378 					fileSpec();
24379 					}
24380 					} 
24381 				}
24382 				setState(3504);
24383 				_errHandler.sync(this);
24384 				_alt = getInterpreter().adaptivePredict(_input,333,_ctx);
24385 			}
24386 			setState(3509);
24387 			_errHandler.sync(this);
24388 			_la = _input.LA(1);
24389 			while (_la==COMMA_) {
24390 				{
24391 				{
24392 				setState(3505);
24393 				match(COMMA_);
24394 				setState(3506);
24395 				databaseFileGroup();
24396 				}
24397 				}
24398 				setState(3511);
24399 				_errHandler.sync(this);
24400 				_la = _input.LA(1);
24401 			}
24402 			setState(3512);
24403 			databaseLogOns();
24404 			}
24405 		}
24406 		catch (RecognitionException re) {
24407 			_localctx.exception = re;
24408 			_errHandler.reportError(this, re);
24409 			_errHandler.recover(this, re);
24410 		}
24411 		finally {
24412 			exitRule();
24413 		}
24414 		return _localctx;
24415 	}
24416 
24417 	public static class DatabaseOptionContext extends ParserRuleContext {
24418 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
24419 		public List<FileStreamOptionContext> fileStreamOption() {
24420 			return getRuleContexts(FileStreamOptionContext.class);
24421 		}
24422 		public FileStreamOptionContext fileStreamOption(int i) {
24423 			return getRuleContext(FileStreamOptionContext.class,i);
24424 		}
24425 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24426 		public TerminalNode COMMA_(int i) {
24427 			return getToken(SQLServerStatementParser.COMMA_, i);
24428 		}
24429 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
24430 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24431 		public TerminalNode EQ_(int i) {
24432 			return getToken(SQLServerStatementParser.EQ_, i);
24433 		}
24434 		public IgnoredIdentifierContext ignoredIdentifier() {
24435 			return getRuleContext(IgnoredIdentifierContext.class,0);
24436 		}
24437 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
24438 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
24439 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
24440 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24441 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
24442 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
24443 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
24444 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
24445 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
24446 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
24447 		public DatabaseOptionContext(ParserRuleContext parent, int invokingState) {
24448 			super(parent, invokingState);
24449 		}
24450 		@Override public int getRuleIndex() { return RULE_databaseOption; }
24451 		@Override
24452 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24453 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseOption(this);
24454 			else return visitor.visitChildren(this);
24455 		}
24456 	}
24457 
24458 	public final DatabaseOptionContext databaseOption() throws RecognitionException {
24459 		DatabaseOptionContext _localctx = new DatabaseOptionContext(_ctx, getState());
24460 		enterRule(_localctx, 520, RULE_databaseOption);
24461 		int _la;
24462 		try {
24463 			int _alt;
24464 			setState(3548);
24465 			_errHandler.sync(this);
24466 			switch (_input.LA(1)) {
24467 			case FILESTREAM:
24468 				enterOuterAlt(_localctx, 1);
24469 				{
24470 				setState(3514);
24471 				match(FILESTREAM);
24472 				setState(3515);
24473 				fileStreamOption();
24474 				setState(3520);
24475 				_errHandler.sync(this);
24476 				_alt = getInterpreter().adaptivePredict(_input,335,_ctx);
24477 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
24478 					if ( _alt==1 ) {
24479 						{
24480 						{
24481 						setState(3516);
24482 						match(COMMA_);
24483 						setState(3517);
24484 						fileStreamOption();
24485 						}
24486 						} 
24487 					}
24488 					setState(3522);
24489 					_errHandler.sync(this);
24490 					_alt = getInterpreter().adaptivePredict(_input,335,_ctx);
24491 				}
24492 				}
24493 				break;
24494 			case DEFAULT_FULLTEXT_LANGUAGE:
24495 				enterOuterAlt(_localctx, 2);
24496 				{
24497 				setState(3523);
24498 				match(DEFAULT_FULLTEXT_LANGUAGE);
24499 				setState(3524);
24500 				match(EQ_);
24501 				setState(3525);
24502 				ignoredIdentifier();
24503 				}
24504 				break;
24505 			case DEFAULT_LANGUAGE:
24506 				enterOuterAlt(_localctx, 3);
24507 				{
24508 				setState(3526);
24509 				match(DEFAULT_LANGUAGE);
24510 				setState(3527);
24511 				match(EQ_);
24512 				setState(3528);
24513 				ignoredIdentifier();
24514 				}
24515 				break;
24516 			case NESTED_TRIGGERS:
24517 				enterOuterAlt(_localctx, 4);
24518 				{
24519 				setState(3529);
24520 				match(NESTED_TRIGGERS);
24521 				setState(3530);
24522 				match(EQ_);
24523 				setState(3531);
24524 				_la = _input.LA(1);
24525 				if ( !(_la==ON || _la==OFF) ) {
24526 				_errHandler.recoverInline(this);
24527 				}
24528 				else {
24529 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24530 					_errHandler.reportMatch(this);
24531 					consume();
24532 				}
24533 				}
24534 				break;
24535 			case TRANSFORM_NOISE_WORDS:
24536 				enterOuterAlt(_localctx, 5);
24537 				{
24538 				setState(3532);
24539 				match(TRANSFORM_NOISE_WORDS);
24540 				setState(3533);
24541 				match(EQ_);
24542 				setState(3534);
24543 				_la = _input.LA(1);
24544 				if ( !(_la==ON || _la==OFF) ) {
24545 				_errHandler.recoverInline(this);
24546 				}
24547 				else {
24548 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24549 					_errHandler.reportMatch(this);
24550 					consume();
24551 				}
24552 				}
24553 				break;
24554 			case TWO_DIGIT_YEAR_CUTOFF:
24555 				enterOuterAlt(_localctx, 6);
24556 				{
24557 				setState(3535);
24558 				match(TWO_DIGIT_YEAR_CUTOFF);
24559 				setState(3536);
24560 				match(EQ_);
24561 				setState(3537);
24562 				ignoredIdentifier();
24563 				}
24564 				break;
24565 			case DB_CHAINING:
24566 				enterOuterAlt(_localctx, 7);
24567 				{
24568 				setState(3538);
24569 				match(DB_CHAINING);
24570 				setState(3539);
24571 				_la = _input.LA(1);
24572 				if ( !(_la==ON || _la==OFF) ) {
24573 				_errHandler.recoverInline(this);
24574 				}
24575 				else {
24576 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24577 					_errHandler.reportMatch(this);
24578 					consume();
24579 				}
24580 				}
24581 				break;
24582 			case TRUSTWORTHY:
24583 				enterOuterAlt(_localctx, 8);
24584 				{
24585 				setState(3540);
24586 				match(TRUSTWORTHY);
24587 				setState(3541);
24588 				_la = _input.LA(1);
24589 				if ( !(_la==ON || _la==OFF) ) {
24590 				_errHandler.recoverInline(this);
24591 				}
24592 				else {
24593 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24594 					_errHandler.reportMatch(this);
24595 					consume();
24596 				}
24597 				}
24598 				break;
24599 			case PERSISTENT_LOG_BUFFER:
24600 				enterOuterAlt(_localctx, 9);
24601 				{
24602 				setState(3542);
24603 				match(PERSISTENT_LOG_BUFFER);
24604 				setState(3543);
24605 				match(EQ_);
24606 				setState(3544);
24607 				match(ON);
24608 				{
24609 				setState(3545);
24610 				match(DIRECTORY_NAME);
24611 				setState(3546);
24612 				match(EQ_);
24613 				setState(3547);
24614 				ignoredIdentifier();
24615 				}
24616 				}
24617 				break;
24618 			default:
24619 				throw new NoViableAltException(this);
24620 			}
24621 		}
24622 		catch (RecognitionException re) {
24623 			_localctx.exception = re;
24624 			_errHandler.reportError(this, re);
24625 			_errHandler.recover(this, re);
24626 		}
24627 		finally {
24628 			exitRule();
24629 		}
24630 		return _localctx;
24631 	}
24632 
24633 	public static class FileStreamOptionContext extends ParserRuleContext {
24634 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
24635 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24636 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
24637 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
24638 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
24639 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
24640 		public IgnoredIdentifierContext ignoredIdentifier() {
24641 			return getRuleContext(IgnoredIdentifierContext.class,0);
24642 		}
24643 		public FileStreamOptionContext(ParserRuleContext parent, int invokingState) {
24644 			super(parent, invokingState);
24645 		}
24646 		@Override public int getRuleIndex() { return RULE_fileStreamOption; }
24647 		@Override
24648 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24649 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOption(this);
24650 			else return visitor.visitChildren(this);
24651 		}
24652 	}
24653 
24654 	public final FileStreamOptionContext fileStreamOption() throws RecognitionException {
24655 		FileStreamOptionContext _localctx = new FileStreamOptionContext(_ctx, getState());
24656 		enterRule(_localctx, 522, RULE_fileStreamOption);
24657 		int _la;
24658 		try {
24659 			setState(3556);
24660 			_errHandler.sync(this);
24661 			switch (_input.LA(1)) {
24662 			case NON_TRANSACTED_ACCESS:
24663 				enterOuterAlt(_localctx, 1);
24664 				{
24665 				setState(3550);
24666 				match(NON_TRANSACTED_ACCESS);
24667 				setState(3551);
24668 				match(EQ_);
24669 				setState(3552);
24670 				_la = _input.LA(1);
24671 				if ( !(_la==FULL || _la==OFF || _la==READ_ONLY) ) {
24672 				_errHandler.recoverInline(this);
24673 				}
24674 				else {
24675 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24676 					_errHandler.reportMatch(this);
24677 					consume();
24678 				}
24679 				}
24680 				break;
24681 			case DIRECTORY_NAME:
24682 				enterOuterAlt(_localctx, 2);
24683 				{
24684 				setState(3553);
24685 				match(DIRECTORY_NAME);
24686 				setState(3554);
24687 				match(EQ_);
24688 				setState(3555);
24689 				ignoredIdentifier();
24690 				}
24691 				break;
24692 			default:
24693 				throw new NoViableAltException(this);
24694 			}
24695 		}
24696 		catch (RecognitionException re) {
24697 			_localctx.exception = re;
24698 			_errHandler.reportError(this, re);
24699 			_errHandler.recover(this, re);
24700 		}
24701 		finally {
24702 			exitRule();
24703 		}
24704 		return _localctx;
24705 	}
24706 
24707 	public static class FileSpecContext extends ParserRuleContext {
24708 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24709 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
24710 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24711 		public TerminalNode EQ_(int i) {
24712 			return getToken(SQLServerStatementParser.EQ_, i);
24713 		}
24714 		public IgnoredIdentifierContext ignoredIdentifier() {
24715 			return getRuleContext(IgnoredIdentifierContext.class,0);
24716 		}
24717 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
24718 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
24719 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
24720 		public DatabaseFileSpecOptionContext databaseFileSpecOption() {
24721 			return getRuleContext(DatabaseFileSpecOptionContext.class,0);
24722 		}
24723 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24724 		public FileSpecContext(ParserRuleContext parent, int invokingState) {
24725 			super(parent, invokingState);
24726 		}
24727 		@Override public int getRuleIndex() { return RULE_fileSpec; }
24728 		@Override
24729 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24730 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileSpec(this);
24731 			else return visitor.visitChildren(this);
24732 		}
24733 	}
24734 
24735 	public final FileSpecContext fileSpec() throws RecognitionException {
24736 		FileSpecContext _localctx = new FileSpecContext(_ctx, getState());
24737 		enterRule(_localctx, 524, RULE_fileSpec);
24738 		try {
24739 			enterOuterAlt(_localctx, 1);
24740 			{
24741 			setState(3558);
24742 			match(LP_);
24743 			setState(3559);
24744 			match(NAME);
24745 			setState(3560);
24746 			match(EQ_);
24747 			setState(3561);
24748 			ignoredIdentifier();
24749 			setState(3562);
24750 			match(COMMA_);
24751 			setState(3563);
24752 			match(FILENAME);
24753 			setState(3564);
24754 			match(EQ_);
24755 			setState(3565);
24756 			match(STRING_);
24757 			setState(3566);
24758 			databaseFileSpecOption();
24759 			setState(3567);
24760 			match(RP_);
24761 			}
24762 		}
24763 		catch (RecognitionException re) {
24764 			_localctx.exception = re;
24765 			_errHandler.reportError(this, re);
24766 			_errHandler.recover(this, re);
24767 		}
24768 		finally {
24769 			exitRule();
24770 		}
24771 		return _localctx;
24772 	}
24773 
24774 	public static class DatabaseFileSpecOptionContext extends ParserRuleContext {
24775 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24776 		public TerminalNode COMMA_(int i) {
24777 			return getToken(SQLServerStatementParser.COMMA_, i);
24778 		}
24779 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
24780 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24781 		public TerminalNode EQ_(int i) {
24782 			return getToken(SQLServerStatementParser.EQ_, i);
24783 		}
24784 		public List<NumberLiteralsContext> numberLiterals() {
24785 			return getRuleContexts(NumberLiteralsContext.class);
24786 		}
24787 		public NumberLiteralsContext numberLiterals(int i) {
24788 			return getRuleContext(NumberLiteralsContext.class,i);
24789 		}
24790 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
24791 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
24792 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
24793 		public List<TerminalNode> KB() { return getTokens(SQLServerStatementParser.KB); }
24794 		public TerminalNode KB(int i) {
24795 			return getToken(SQLServerStatementParser.KB, i);
24796 		}
24797 		public List<TerminalNode> MB() { return getTokens(SQLServerStatementParser.MB); }
24798 		public TerminalNode MB(int i) {
24799 			return getToken(SQLServerStatementParser.MB, i);
24800 		}
24801 		public List<TerminalNode> GB() { return getTokens(SQLServerStatementParser.GB); }
24802 		public TerminalNode GB(int i) {
24803 			return getToken(SQLServerStatementParser.GB, i);
24804 		}
24805 		public List<TerminalNode> TB() { return getTokens(SQLServerStatementParser.TB); }
24806 		public TerminalNode TB(int i) {
24807 			return getToken(SQLServerStatementParser.TB, i);
24808 		}
24809 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
24810 		public DatabaseFileSpecOptionContext(ParserRuleContext parent, int invokingState) {
24811 			super(parent, invokingState);
24812 		}
24813 		@Override public int getRuleIndex() { return RULE_databaseFileSpecOption; }
24814 		@Override
24815 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24816 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileSpecOption(this);
24817 			else return visitor.visitChildren(this);
24818 		}
24819 	}
24820 
24821 	public final DatabaseFileSpecOptionContext databaseFileSpecOption() throws RecognitionException {
24822 		DatabaseFileSpecOptionContext _localctx = new DatabaseFileSpecOptionContext(_ctx, getState());
24823 		enterRule(_localctx, 526, RULE_databaseFileSpecOption);
24824 		int _la;
24825 		try {
24826 			enterOuterAlt(_localctx, 1);
24827 			{
24828 			setState(3576);
24829 			_errHandler.sync(this);
24830 			switch ( getInterpreter().adaptivePredict(_input,339,_ctx) ) {
24831 			case 1:
24832 				{
24833 				setState(3569);
24834 				match(COMMA_);
24835 				setState(3570);
24836 				match(SIZE);
24837 				setState(3571);
24838 				match(EQ_);
24839 				setState(3572);
24840 				numberLiterals();
24841 				setState(3574);
24842 				_errHandler.sync(this);
24843 				_la = _input.LA(1);
24844 				if (((((_la - 509)) & ~0x3f) == 0 && ((1L << (_la - 509)) & ((1L << (KB - 509)) | (1L << (MB - 509)) | (1L << (GB - 509)) | (1L << (TB - 509)))) != 0)) {
24845 					{
24846 					setState(3573);
24847 					_la = _input.LA(1);
24848 					if ( !(((((_la - 509)) & ~0x3f) == 0 && ((1L << (_la - 509)) & ((1L << (KB - 509)) | (1L << (MB - 509)) | (1L << (GB - 509)) | (1L << (TB - 509)))) != 0)) ) {
24849 					_errHandler.recoverInline(this);
24850 					}
24851 					else {
24852 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24853 						_errHandler.reportMatch(this);
24854 						consume();
24855 					}
24856 					}
24857 				}
24858 
24859 				}
24860 				break;
24861 			}
24862 			setState(3588);
24863 			_errHandler.sync(this);
24864 			switch ( getInterpreter().adaptivePredict(_input,342,_ctx) ) {
24865 			case 1:
24866 				{
24867 				setState(3578);
24868 				match(COMMA_);
24869 				setState(3579);
24870 				match(MAXSIZE);
24871 				setState(3580);
24872 				match(EQ_);
24873 				setState(3586);
24874 				_errHandler.sync(this);
24875 				switch (_input.LA(1)) {
24876 				case PLUS_:
24877 				case MINUS_:
24878 				case NUMBER_:
24879 					{
24880 					setState(3581);
24881 					numberLiterals();
24882 					setState(3583);
24883 					_errHandler.sync(this);
24884 					_la = _input.LA(1);
24885 					if (((((_la - 509)) & ~0x3f) == 0 && ((1L << (_la - 509)) & ((1L << (KB - 509)) | (1L << (MB - 509)) | (1L << (GB - 509)) | (1L << (TB - 509)))) != 0)) {
24886 						{
24887 						setState(3582);
24888 						_la = _input.LA(1);
24889 						if ( !(((((_la - 509)) & ~0x3f) == 0 && ((1L << (_la - 509)) & ((1L << (KB - 509)) | (1L << (MB - 509)) | (1L << (GB - 509)) | (1L << (TB - 509)))) != 0)) ) {
24890 						_errHandler.recoverInline(this);
24891 						}
24892 						else {
24893 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24894 							_errHandler.reportMatch(this);
24895 							consume();
24896 						}
24897 						}
24898 					}
24899 
24900 					}
24901 					break;
24902 				case UNLIMITED:
24903 					{
24904 					setState(3585);
24905 					match(UNLIMITED);
24906 					}
24907 					break;
24908 				default:
24909 					throw new NoViableAltException(this);
24910 				}
24911 				}
24912 				break;
24913 			}
24914 			setState(3597);
24915 			_errHandler.sync(this);
24916 			_la = _input.LA(1);
24917 			if (_la==COMMA_) {
24918 				{
24919 				setState(3590);
24920 				match(COMMA_);
24921 				setState(3591);
24922 				match(FILEGROWTH);
24923 				setState(3592);
24924 				match(EQ_);
24925 				setState(3593);
24926 				numberLiterals();
24927 				setState(3595);
24928 				_errHandler.sync(this);
24929 				_la = _input.LA(1);
24930 				if (_la==MOD_ || ((((_la - 509)) & ~0x3f) == 0 && ((1L << (_la - 509)) & ((1L << (KB - 509)) | (1L << (MB - 509)) | (1L << (GB - 509)) | (1L << (TB - 509)))) != 0)) {
24931 					{
24932 					setState(3594);
24933 					_la = _input.LA(1);
24934 					if ( !(_la==MOD_ || ((((_la - 509)) & ~0x3f) == 0 && ((1L << (_la - 509)) & ((1L << (KB - 509)) | (1L << (MB - 509)) | (1L << (GB - 509)) | (1L << (TB - 509)))) != 0)) ) {
24935 					_errHandler.recoverInline(this);
24936 					}
24937 					else {
24938 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24939 						_errHandler.reportMatch(this);
24940 						consume();
24941 					}
24942 					}
24943 				}
24944 
24945 				}
24946 			}
24947 
24948 			}
24949 		}
24950 		catch (RecognitionException re) {
24951 			_localctx.exception = re;
24952 			_errHandler.reportError(this, re);
24953 			_errHandler.recover(this, re);
24954 		}
24955 		finally {
24956 			exitRule();
24957 		}
24958 		return _localctx;
24959 	}
24960 
24961 	public static class DatabaseFileGroupContext extends ParserRuleContext {
24962 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
24963 		public IgnoredIdentifierContext ignoredIdentifier() {
24964 			return getRuleContext(IgnoredIdentifierContext.class,0);
24965 		}
24966 		public List<FileSpecContext> fileSpec() {
24967 			return getRuleContexts(FileSpecContext.class);
24968 		}
24969 		public FileSpecContext fileSpec(int i) {
24970 			return getRuleContext(FileSpecContext.class,i);
24971 		}
24972 		public DatabaseFileGroupContainsContext databaseFileGroupContains() {
24973 			return getRuleContext(DatabaseFileGroupContainsContext.class,0);
24974 		}
24975 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24976 		public TerminalNode COMMA_(int i) {
24977 			return getToken(SQLServerStatementParser.COMMA_, i);
24978 		}
24979 		public DatabaseFileGroupContext(ParserRuleContext parent, int invokingState) {
24980 			super(parent, invokingState);
24981 		}
24982 		@Override public int getRuleIndex() { return RULE_databaseFileGroup; }
24983 		@Override
24984 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24985 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroup(this);
24986 			else return visitor.visitChildren(this);
24987 		}
24988 	}
24989 
24990 	public final DatabaseFileGroupContext databaseFileGroup() throws RecognitionException {
24991 		DatabaseFileGroupContext _localctx = new DatabaseFileGroupContext(_ctx, getState());
24992 		enterRule(_localctx, 528, RULE_databaseFileGroup);
24993 		try {
24994 			int _alt;
24995 			enterOuterAlt(_localctx, 1);
24996 			{
24997 			setState(3599);
24998 			match(FILEGROUP);
24999 			setState(3600);
25000 			ignoredIdentifier();
25001 			setState(3602);
25002 			_errHandler.sync(this);
25003 			switch ( getInterpreter().adaptivePredict(_input,345,_ctx) ) {
25004 			case 1:
25005 				{
25006 				setState(3601);
25007 				databaseFileGroupContains();
25008 				}
25009 				break;
25010 			}
25011 			setState(3604);
25012 			fileSpec();
25013 			setState(3609);
25014 			_errHandler.sync(this);
25015 			_alt = getInterpreter().adaptivePredict(_input,346,_ctx);
25016 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
25017 				if ( _alt==1 ) {
25018 					{
25019 					{
25020 					setState(3605);
25021 					match(COMMA_);
25022 					setState(3606);
25023 					fileSpec();
25024 					}
25025 					} 
25026 				}
25027 				setState(3611);
25028 				_errHandler.sync(this);
25029 				_alt = getInterpreter().adaptivePredict(_input,346,_ctx);
25030 			}
25031 			}
25032 		}
25033 		catch (RecognitionException re) {
25034 			_localctx.exception = re;
25035 			_errHandler.reportError(this, re);
25036 			_errHandler.recover(this, re);
25037 		}
25038 		finally {
25039 			exitRule();
25040 		}
25041 		return _localctx;
25042 	}
25043 
25044 	public static class DatabaseFileGroupContainsContext extends ParserRuleContext {
25045 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
25046 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
25047 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
25048 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
25049 		public DatabaseFileGroupContainsContext(ParserRuleContext parent, int invokingState) {
25050 			super(parent, invokingState);
25051 		}
25052 		@Override public int getRuleIndex() { return RULE_databaseFileGroupContains; }
25053 		@Override
25054 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25055 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroupContains(this);
25056 			else return visitor.visitChildren(this);
25057 		}
25058 	}
25059 
25060 	public final DatabaseFileGroupContainsContext databaseFileGroupContains() throws RecognitionException {
25061 		DatabaseFileGroupContainsContext _localctx = new DatabaseFileGroupContainsContext(_ctx, getState());
25062 		enterRule(_localctx, 530, RULE_databaseFileGroupContains);
25063 		int _la;
25064 		try {
25065 			setState(3621);
25066 			_errHandler.sync(this);
25067 			switch ( getInterpreter().adaptivePredict(_input,349,_ctx) ) {
25068 			case 1:
25069 				enterOuterAlt(_localctx, 1);
25070 				{
25071 				setState(3614);
25072 				_errHandler.sync(this);
25073 				_la = _input.LA(1);
25074 				if (_la==CONTAINS) {
25075 					{
25076 					setState(3612);
25077 					match(CONTAINS);
25078 					setState(3613);
25079 					match(FILESTREAM);
25080 					}
25081 				}
25082 
25083 				setState(3617);
25084 				_errHandler.sync(this);
25085 				_la = _input.LA(1);
25086 				if (_la==DEFAULT) {
25087 					{
25088 					setState(3616);
25089 					match(DEFAULT);
25090 					}
25091 				}
25092 
25093 				}
25094 				break;
25095 			case 2:
25096 				enterOuterAlt(_localctx, 2);
25097 				{
25098 				setState(3619);
25099 				match(CONTAINS);
25100 				setState(3620);
25101 				match(MEMORY_OPTIMIZED_DATA);
25102 				}
25103 				break;
25104 			}
25105 		}
25106 		catch (RecognitionException re) {
25107 			_localctx.exception = re;
25108 			_errHandler.reportError(this, re);
25109 			_errHandler.recover(this, re);
25110 		}
25111 		finally {
25112 			exitRule();
25113 		}
25114 		return _localctx;
25115 	}
25116 
25117 	public static class DatabaseLogOnsContext extends ParserRuleContext {
25118 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
25119 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
25120 		public List<FileSpecContext> fileSpec() {
25121 			return getRuleContexts(FileSpecContext.class);
25122 		}
25123 		public FileSpecContext fileSpec(int i) {
25124 			return getRuleContext(FileSpecContext.class,i);
25125 		}
25126 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25127 		public TerminalNode COMMA_(int i) {
25128 			return getToken(SQLServerStatementParser.COMMA_, i);
25129 		}
25130 		public DatabaseLogOnsContext(ParserRuleContext parent, int invokingState) {
25131 			super(parent, invokingState);
25132 		}
25133 		@Override public int getRuleIndex() { return RULE_databaseLogOns; }
25134 		@Override
25135 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25136 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseLogOns(this);
25137 			else return visitor.visitChildren(this);
25138 		}
25139 	}
25140 
25141 	public final DatabaseLogOnsContext databaseLogOns() throws RecognitionException {
25142 		DatabaseLogOnsContext _localctx = new DatabaseLogOnsContext(_ctx, getState());
25143 		enterRule(_localctx, 532, RULE_databaseLogOns);
25144 		int _la;
25145 		try {
25146 			enterOuterAlt(_localctx, 1);
25147 			{
25148 			setState(3633);
25149 			_errHandler.sync(this);
25150 			_la = _input.LA(1);
25151 			if (_la==LOG) {
25152 				{
25153 				setState(3623);
25154 				match(LOG);
25155 				setState(3624);
25156 				match(ON);
25157 				setState(3625);
25158 				fileSpec();
25159 				setState(3630);
25160 				_errHandler.sync(this);
25161 				_la = _input.LA(1);
25162 				while (_la==COMMA_) {
25163 					{
25164 					{
25165 					setState(3626);
25166 					match(COMMA_);
25167 					setState(3627);
25168 					fileSpec();
25169 					}
25170 					}
25171 					setState(3632);
25172 					_errHandler.sync(this);
25173 					_la = _input.LA(1);
25174 				}
25175 				}
25176 			}
25177 
25178 			}
25179 		}
25180 		catch (RecognitionException re) {
25181 			_localctx.exception = re;
25182 			_errHandler.reportError(this, re);
25183 			_errHandler.recover(this, re);
25184 		}
25185 		finally {
25186 			exitRule();
25187 		}
25188 		return _localctx;
25189 	}
25190 
25191 	public static class DeclareVariableContext extends ParserRuleContext {
25192 		public TerminalNode DECLARE() { return getToken(SQLServerStatementParser.DECLARE, 0); }
25193 		public List<VariableContext> variable() {
25194 			return getRuleContexts(VariableContext.class);
25195 		}
25196 		public VariableContext variable(int i) {
25197 			return getRuleContext(VariableContext.class,i);
25198 		}
25199 		public TableVariableContext tableVariable() {
25200 			return getRuleContext(TableVariableContext.class,0);
25201 		}
25202 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25203 		public TerminalNode COMMA_(int i) {
25204 			return getToken(SQLServerStatementParser.COMMA_, i);
25205 		}
25206 		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
25207 			super(parent, invokingState);
25208 		}
25209 		@Override public int getRuleIndex() { return RULE_declareVariable; }
25210 		@Override
25211 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25212 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeclareVariable(this);
25213 			else return visitor.visitChildren(this);
25214 		}
25215 	}
25216 
25217 	public final DeclareVariableContext declareVariable() throws RecognitionException {
25218 		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
25219 		enterRule(_localctx, 534, RULE_declareVariable);
25220 		int _la;
25221 		try {
25222 			enterOuterAlt(_localctx, 1);
25223 			{
25224 			setState(3635);
25225 			match(DECLARE);
25226 			setState(3645);
25227 			_errHandler.sync(this);
25228 			switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) {
25229 			case 1:
25230 				{
25231 				setState(3636);
25232 				variable();
25233 				setState(3641);
25234 				_errHandler.sync(this);
25235 				_la = _input.LA(1);
25236 				while (_la==COMMA_) {
25237 					{
25238 					{
25239 					setState(3637);
25240 					match(COMMA_);
25241 					setState(3638);
25242 					variable();
25243 					}
25244 					}
25245 					setState(3643);
25246 					_errHandler.sync(this);
25247 					_la = _input.LA(1);
25248 				}
25249 				}
25250 				break;
25251 			case 2:
25252 				{
25253 				setState(3644);
25254 				tableVariable();
25255 				}
25256 				break;
25257 			}
25258 			}
25259 		}
25260 		catch (RecognitionException re) {
25261 			_localctx.exception = re;
25262 			_errHandler.reportError(this, re);
25263 			_errHandler.recover(this, re);
25264 		}
25265 		finally {
25266 			exitRule();
25267 		}
25268 		return _localctx;
25269 	}
25270 
25271 	public static class VariableContext extends ParserRuleContext {
25272 		public VariableNameContext variableName() {
25273 			return getRuleContext(VariableNameContext.class,0);
25274 		}
25275 		public DataTypeContext dataType() {
25276 			return getRuleContext(DataTypeContext.class,0);
25277 		}
25278 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25279 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25280 		public SimpleExprContext simpleExpr() {
25281 			return getRuleContext(SimpleExprContext.class,0);
25282 		}
25283 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
25284 		public VariableContext(ParserRuleContext parent, int invokingState) {
25285 			super(parent, invokingState);
25286 		}
25287 		@Override public int getRuleIndex() { return RULE_variable; }
25288 		@Override
25289 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25290 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariable(this);
25291 			else return visitor.visitChildren(this);
25292 		}
25293 	}
25294 
25295 	public final VariableContext variable() throws RecognitionException {
25296 		VariableContext _localctx = new VariableContext(_ctx, getState());
25297 		enterRule(_localctx, 536, RULE_variable);
25298 		int _la;
25299 		try {
25300 			setState(3659);
25301 			_errHandler.sync(this);
25302 			switch ( getInterpreter().adaptivePredict(_input,356,_ctx) ) {
25303 			case 1:
25304 				enterOuterAlt(_localctx, 1);
25305 				{
25306 				setState(3647);
25307 				variableName();
25308 				setState(3649);
25309 				_errHandler.sync(this);
25310 				_la = _input.LA(1);
25311 				if (_la==AS) {
25312 					{
25313 					setState(3648);
25314 					match(AS);
25315 					}
25316 				}
25317 
25318 				setState(3651);
25319 				dataType();
25320 				setState(3654);
25321 				_errHandler.sync(this);
25322 				switch ( getInterpreter().adaptivePredict(_input,355,_ctx) ) {
25323 				case 1:
25324 					{
25325 					setState(3652);
25326 					match(EQ_);
25327 					setState(3653);
25328 					simpleExpr(0);
25329 					}
25330 					break;
25331 				}
25332 				}
25333 				break;
25334 			case 2:
25335 				enterOuterAlt(_localctx, 2);
25336 				{
25337 				setState(3656);
25338 				variableName();
25339 				setState(3657);
25340 				match(CURSOR);
25341 				}
25342 				break;
25343 			}
25344 		}
25345 		catch (RecognitionException re) {
25346 			_localctx.exception = re;
25347 			_errHandler.reportError(this, re);
25348 			_errHandler.recover(this, re);
25349 		}
25350 		finally {
25351 			exitRule();
25352 		}
25353 		return _localctx;
25354 	}
25355 
25356 	public static class TableVariableContext extends ParserRuleContext {
25357 		public VariableNameContext variableName() {
25358 			return getRuleContext(VariableNameContext.class,0);
25359 		}
25360 		public VariTableTypeDefinitionContext variTableTypeDefinition() {
25361 			return getRuleContext(VariTableTypeDefinitionContext.class,0);
25362 		}
25363 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25364 		public TableVariableContext(ParserRuleContext parent, int invokingState) {
25365 			super(parent, invokingState);
25366 		}
25367 		@Override public int getRuleIndex() { return RULE_tableVariable; }
25368 		@Override
25369 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25370 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariable(this);
25371 			else return visitor.visitChildren(this);
25372 		}
25373 	}
25374 
25375 	public final TableVariableContext tableVariable() throws RecognitionException {
25376 		TableVariableContext _localctx = new TableVariableContext(_ctx, getState());
25377 		enterRule(_localctx, 538, RULE_tableVariable);
25378 		int _la;
25379 		try {
25380 			enterOuterAlt(_localctx, 1);
25381 			{
25382 			setState(3661);
25383 			variableName();
25384 			setState(3663);
25385 			_errHandler.sync(this);
25386 			_la = _input.LA(1);
25387 			if (_la==AS) {
25388 				{
25389 				setState(3662);
25390 				match(AS);
25391 				}
25392 			}
25393 
25394 			setState(3665);
25395 			variTableTypeDefinition();
25396 			}
25397 		}
25398 		catch (RecognitionException re) {
25399 			_localctx.exception = re;
25400 			_errHandler.reportError(this, re);
25401 			_errHandler.recover(this, re);
25402 		}
25403 		finally {
25404 			exitRule();
25405 		}
25406 		return _localctx;
25407 	}
25408 
25409 	public static class VariTableTypeDefinitionContext extends ParserRuleContext {
25410 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
25411 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25412 		public List<TableVariableClauseContext> tableVariableClause() {
25413 			return getRuleContexts(TableVariableClauseContext.class);
25414 		}
25415 		public TableVariableClauseContext tableVariableClause(int i) {
25416 			return getRuleContext(TableVariableClauseContext.class,i);
25417 		}
25418 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25419 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25420 		public TerminalNode COMMA_(int i) {
25421 			return getToken(SQLServerStatementParser.COMMA_, i);
25422 		}
25423 		public VariTableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
25424 			super(parent, invokingState);
25425 		}
25426 		@Override public int getRuleIndex() { return RULE_variTableTypeDefinition; }
25427 		@Override
25428 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25429 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariTableTypeDefinition(this);
25430 			else return visitor.visitChildren(this);
25431 		}
25432 	}
25433 
25434 	public final VariTableTypeDefinitionContext variTableTypeDefinition() throws RecognitionException {
25435 		VariTableTypeDefinitionContext _localctx = new VariTableTypeDefinitionContext(_ctx, getState());
25436 		enterRule(_localctx, 540, RULE_variTableTypeDefinition);
25437 		int _la;
25438 		try {
25439 			enterOuterAlt(_localctx, 1);
25440 			{
25441 			setState(3667);
25442 			match(TABLE);
25443 			setState(3668);
25444 			match(LP_);
25445 			setState(3669);
25446 			tableVariableClause();
25447 			setState(3674);
25448 			_errHandler.sync(this);
25449 			_la = _input.LA(1);
25450 			while (_la==COMMA_) {
25451 				{
25452 				{
25453 				setState(3670);
25454 				match(COMMA_);
25455 				setState(3671);
25456 				tableVariableClause();
25457 				}
25458 				}
25459 				setState(3676);
25460 				_errHandler.sync(this);
25461 				_la = _input.LA(1);
25462 			}
25463 			setState(3677);
25464 			match(RP_);
25465 			}
25466 		}
25467 		catch (RecognitionException re) {
25468 			_localctx.exception = re;
25469 			_errHandler.reportError(this, re);
25470 			_errHandler.recover(this, re);
25471 		}
25472 		finally {
25473 			exitRule();
25474 		}
25475 		return _localctx;
25476 	}
25477 
25478 	public static class TableVariableClauseContext extends ParserRuleContext {
25479 		public VariableTableColumnDefinitionContext variableTableColumnDefinition() {
25480 			return getRuleContext(VariableTableColumnDefinitionContext.class,0);
25481 		}
25482 		public VariableTableConstraintContext variableTableConstraint() {
25483 			return getRuleContext(VariableTableConstraintContext.class,0);
25484 		}
25485 		public TableVariableClauseContext(ParserRuleContext parent, int invokingState) {
25486 			super(parent, invokingState);
25487 		}
25488 		@Override public int getRuleIndex() { return RULE_tableVariableClause; }
25489 		@Override
25490 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25491 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariableClause(this);
25492 			else return visitor.visitChildren(this);
25493 		}
25494 	}
25495 
25496 	public final TableVariableClauseContext tableVariableClause() throws RecognitionException {
25497 		TableVariableClauseContext _localctx = new TableVariableClauseContext(_ctx, getState());
25498 		enterRule(_localctx, 542, RULE_tableVariableClause);
25499 		try {
25500 			setState(3681);
25501 			_errHandler.sync(this);
25502 			switch (_input.LA(1)) {
25503 			case DOLLAR_:
25504 			case TRUNCATE:
25505 			case SCHEMA:
25506 			case COLUMNS:
25507 			case PRECISION:
25508 			case FUNCTION:
25509 			case TRIGGER:
25510 			case CAST:
25511 			case TRIM:
25512 			case SUBSTRING:
25513 			case OFF:
25514 			case GROUP:
25515 			case LIMIT:
25516 			case OFFSET:
25517 			case SAVEPOINT:
25518 			case BOOLEAN:
25519 			case ARRAY:
25520 			case DATE:
25521 			case TIMESTAMP:
25522 			case LOCALTIME:
25523 			case LOCALTIMESTAMP:
25524 			case YEAR:
25525 			case QUARTER:
25526 			case MONTH:
25527 			case WEEK:
25528 			case DAY:
25529 			case SECOND:
25530 			case MICROSECOND:
25531 			case MAX:
25532 			case MIN:
25533 			case SUM:
25534 			case COUNT:
25535 			case AVG:
25536 			case ENABLE:
25537 			case DISABLE:
25538 			case INSTANCE:
25539 			case DO:
25540 			case DEFINER:
25541 			case SQL:
25542 			case CASCADED:
25543 			case LOCAL:
25544 			case NEXT:
25545 			case NAME:
25546 			case INTEGER:
25547 			case TYPE:
25548 			case TEXT:
25549 			case VIEWS:
25550 			case READ_ONLY:
25551 			case DATABASE:
25552 			case RETURNS:
25553 			case DATEPART:
25554 			case PASSWORD:
25555 			case BINARY:
25556 			case HIDDEN_:
25557 			case MOD:
25558 			case PARTITION:
25559 			case PARTITIONS:
25560 			case TOP:
25561 			case ROW:
25562 			case ROWS:
25563 			case XOR:
25564 			case ALWAYS:
25565 			case ROLE:
25566 			case START:
25567 			case ALGORITHM:
25568 			case AUTO:
25569 			case BLOCKERS:
25570 			case CLUSTERED:
25571 			case NONCLUSTERED:
25572 			case COLUMNSTORE:
25573 			case CONTENT:
25574 			case YEARS:
25575 			case MONTHS:
25576 			case WEEKS:
25577 			case DAYS:
25578 			case MINUTES:
25579 			case DENY:
25580 			case DETERMINISTIC:
25581 			case DISTRIBUTION:
25582 			case DOCUMENT:
25583 			case DURABILITY:
25584 			case ENCRYPTED:
25585 			case FILESTREAM:
25586 			case FILETABLE:
25587 			case FILLFACTOR:
25588 			case FOLLOWING:
25589 			case HASH:
25590 			case HEAP:
25591 			case INBOUND:
25592 			case OUTBOUND:
25593 			case UNBOUNDED:
25594 			case INFINITE:
25595 			case LOGIN:
25596 			case MASKED:
25597 			case MAXDOP:
25598 			case MOVE:
25599 			case NOCHECK:
25600 			case OBJECT:
25601 			case ONLINE:
25602 			case OVER:
25603 			case PAGE:
25604 			case PAUSED:
25605 			case PERIOD:
25606 			case PERSISTED:
25607 			case PRECEDING:
25608 			case RANDOMIZED:
25609 			case RANGE:
25610 			case REBUILD:
25611 			case REPLICATE:
25612 			case REPLICATION:
25613 			case RESUMABLE:
25614 			case ROWGUIDCOL:
25615 			case SAVE:
25616 			case SELF:
25617 			case SPARSE:
25618 			case SWITCH:
25619 			case TRAN:
25620 			case TRANCOUNT:
25621 			case CONTROL:
25622 			case CONCAT:
25623 			case TAKE:
25624 			case OWNERSHIP:
25625 			case DEFINITION:
25626 			case APPLICATION:
25627 			case ASSEMBLY:
25628 			case SYMMETRIC:
25629 			case ASYMMETRIC:
25630 			case SERVER:
25631 			case RECEIVE:
25632 			case CHANGE:
25633 			case TRACE:
25634 			case TRACKING:
25635 			case RESOURCES:
25636 			case SETTINGS:
25637 			case STATE:
25638 			case AVAILABILITY:
25639 			case CREDENTIAL:
25640 			case ENDPOINT:
25641 			case EVENT:
25642 			case NOTIFICATION:
25643 			case LINKED:
25644 			case AUDIT:
25645 			case DDL:
25646 			case XML:
25647 			case IMPERSONATE:
25648 			case SECURABLES:
25649 			case AUTHENTICATE:
25650 			case EXTERNAL:
25651 			case ACCESS:
25652 			case ADMINISTER:
25653 			case BULK:
25654 			case OPERATIONS:
25655 			case UNSAFE:
25656 			case SHUTDOWN:
25657 			case SCOPED:
25658 			case CONFIGURATION:
25659 			case DATASPACE:
25660 			case SERVICE:
25661 			case CERTIFICATE:
25662 			case CONTRACT:
25663 			case ENCRYPTION:
25664 			case MASTER:
25665 			case DATA:
25666 			case SOURCE:
25667 			case FILE:
25668 			case FORMAT:
25669 			case LIBRARY:
25670 			case FULLTEXT:
25671 			case MASK:
25672 			case UNMASK:
25673 			case MESSAGE:
25674 			case REMOTE:
25675 			case BINDING:
25676 			case ROUTE:
25677 			case SECURITY:
25678 			case POLICY:
25679 			case AGGREGATE:
25680 			case QUEUE:
25681 			case RULE:
25682 			case SYNONYM:
25683 			case COLLECTION:
25684 			case SCRIPT:
25685 			case KILL:
25686 			case BACKUP:
25687 			case LOG:
25688 			case SHOWPLAN:
25689 			case SUBSCRIBE:
25690 			case QUERY:
25691 			case NOTIFICATIONS:
25692 			case CHECKPOINT:
25693 			case SEQUENCE:
25694 			case ABORT_AFTER_WAIT:
25695 			case ALLOW_PAGE_LOCKS:
25696 			case ALLOW_ROW_LOCKS:
25697 			case ALL_SPARSE_COLUMNS:
25698 			case BUCKET_COUNT:
25699 			case COLUMNSTORE_ARCHIVE:
25700 			case COLUMN_ENCRYPTION_KEY:
25701 			case COLUMN_SET:
25702 			case COMPRESSION_DELAY:
25703 			case DATABASE_DEAULT:
25704 			case DATA_COMPRESSION:
25705 			case DATA_CONSISTENCY_CHECK:
25706 			case ENCRYPTION_TYPE:
25707 			case SYSTEM_TIME:
25708 			case SYSTEM_VERSIONING:
25709 			case TEXTIMAGE_ON:
25710 			case WAIT_AT_LOW_PRIORITY:
25711 			case STATISTICS_INCREMENTAL:
25712 			case STATISTICS_NORECOMPUTE:
25713 			case ROUND_ROBIN:
25714 			case SCHEMA_AND_DATA:
25715 			case SCHEMA_ONLY:
25716 			case SORT_IN_TEMPDB:
25717 			case IGNORE_DUP_KEY:
25718 			case IMPLICIT_TRANSACTIONS:
25719 			case MAX_DURATION:
25720 			case MEMORY_OPTIMIZED:
25721 			case MIGRATION_STATE:
25722 			case PAD_INDEX:
25723 			case REMOTE_DATA_ARCHIVE:
25724 			case FILESTREAM_ON:
25725 			case FILETABLE_COLLATE_FILENAME:
25726 			case FILETABLE_DIRECTORY:
25727 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
25728 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
25729 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
25730 			case FILTER_PREDICATE:
25731 			case HISTORY_RETENTION_PERIOD:
25732 			case HISTORY_TABLE:
25733 			case LOCK_ESCALATION:
25734 			case DROP_EXISTING:
25735 			case ROW_NUMBER:
25736 			case FIRST:
25737 			case DATETIME2:
25738 			case OUTPUT:
25739 			case INSERTED:
25740 			case DELETED:
25741 			case FILENAME:
25742 			case SIZE:
25743 			case MAXSIZE:
25744 			case FILEGROWTH:
25745 			case UNLIMITED:
25746 			case KB:
25747 			case MB:
25748 			case GB:
25749 			case TB:
25750 			case CONTAINS:
25751 			case MEMORY_OPTIMIZED_DATA:
25752 			case FILEGROUP:
25753 			case NON_TRANSACTED_ACCESS:
25754 			case DB_CHAINING:
25755 			case TRUSTWORTHY:
25756 			case FORWARD_ONLY:
25757 			case KEYSET:
25758 			case FAST_FORWARD:
25759 			case SCROLL_LOCKS:
25760 			case OPTIMISTIC:
25761 			case TYPE_WARNING:
25762 			case SCHEMABINDING:
25763 			case CALLER:
25764 			case INPUT:
25765 			case OWNER:
25766 			case SNAPSHOT:
25767 			case REPEATABLE:
25768 			case SERIALIZABLE:
25769 			case NATIVE_COMPILATION:
25770 			case VIEW_METADATA:
25771 			case INSTEAD:
25772 			case APPEND:
25773 			case INCREMENT:
25774 			case CACHE:
25775 			case MINVALUE:
25776 			case MAXVALUE:
25777 			case RESTART:
25778 			case LOB_COMPACTION:
25779 			case COMPRESS_ALL_ROW_GROUPS:
25780 			case REORGANIZE:
25781 			case RESUME:
25782 			case PAUSE:
25783 			case ABORT:
25784 			case ACCELERATED_DATABASE_RECOVERY:
25785 			case PERSISTENT_VERSION_STORE_FILEGROUP:
25786 			case IMMEDIATE:
25787 			case NO_WAIT:
25788 			case TARGET_RECOVERY_TIME:
25789 			case SECONDS:
25790 			case HONOR_BROKER_PRIORITY:
25791 			case ERROR_BROKER_CONVERSATIONS:
25792 			case NEW_BROKER:
25793 			case DISABLE_BROKER:
25794 			case ENABLE_BROKER:
25795 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
25796 			case READ_COMMITTED_SNAPSHOT:
25797 			case ALLOW_SNAPSHOT_ISOLATION:
25798 			case RECURSIVE_TRIGGERS:
25799 			case QUOTED_IDENTIFIER:
25800 			case NUMERIC_ROUNDABORT:
25801 			case CONCAT_NULL_YIELDS_NULL:
25802 			case COMPATIBILITY_LEVEL:
25803 			case ARITHABORT:
25804 			case ANSI_WARNINGS:
25805 			case ANSI_PADDING:
25806 			case ANSI_NULLS:
25807 			case ANSI_NULL_DEFAULT:
25808 			case PAGE_VERIFY:
25809 			case CHECKSUM:
25810 			case TORN_PAGE_DETECTION:
25811 			case BULK_LOGGED:
25812 			case RECOVERY:
25813 			case TOTAL_EXECUTION_CPU_TIME_MS:
25814 			case TOTAL_COMPILE_CPU_TIME_MS:
25815 			case STALE_CAPTURE_POLICY_THRESHOLD:
25816 			case EXECUTION_COUNT:
25817 			case QUERY_CAPTURE_POLICY:
25818 			case WAIT_STATS_CAPTURE_MODE:
25819 			case MAX_PLANS_PER_QUERY:
25820 			case QUERY_CAPTURE_MODE:
25821 			case SIZE_BASED_CLEANUP_MODE:
25822 			case INTERVAL_LENGTH_MINUTES:
25823 			case MAX_STORAGE_SIZE_MB:
25824 			case DATA_FLUSH_INTERVAL_SECONDS:
25825 			case CLEANUP_POLICY:
25826 			case CUSTOM:
25827 			case STALE_QUERY_THRESHOLD_DAYS:
25828 			case OPERATION_MODE:
25829 			case QUERY_STORE:
25830 			case CURSOR_DEFAULT:
25831 			case GLOBAL:
25832 			case CURSOR_CLOSE_ON_COMMIT:
25833 			case HOURS:
25834 			case CHANGE_RETENTION:
25835 			case AUTO_CLEANUP:
25836 			case CHANGE_TRACKING:
25837 			case AUTOMATIC_TUNING:
25838 			case FORCE_LAST_GOOD_PLAN:
25839 			case AUTO_UPDATE_STATISTICS_ASYNC:
25840 			case AUTO_UPDATE_STATISTICS:
25841 			case AUTO_SHRINK:
25842 			case AUTO_CREATE_STATISTICS:
25843 			case INCREMENTAL:
25844 			case AUTO_CLOSE:
25845 			case DATA_RETENTION:
25846 			case TEMPORAL_HISTORY_RETENTION:
25847 			case EDITION:
25848 			case MIXED_PAGE_ALLOCATION:
25849 			case DISABLED:
25850 			case ALLOWED:
25851 			case HADR:
25852 			case MULTI_USER:
25853 			case RESTRICTED_USER:
25854 			case SINGLE_USER:
25855 			case OFFLINE:
25856 			case EMERGENCY:
25857 			case SUSPEND:
25858 			case DATE_CORRELATION_OPTIMIZATION:
25859 			case ELASTIC_POOL:
25860 			case SERVICE_OBJECTIVE:
25861 			case DATABASE_NAME:
25862 			case ALLOW_CONNECTIONS:
25863 			case GEO:
25864 			case NAMED:
25865 			case DATEFIRST:
25866 			case BACKUP_STORAGE_REDUNDANCY:
25867 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
25868 			case SECONDARY:
25869 			case FAILOVER:
25870 			case DEFAULT_FULLTEXT_LANGUAGE:
25871 			case DEFAULT_LANGUAGE:
25872 			case INLINE:
25873 			case NESTED_TRIGGERS:
25874 			case TRANSFORM_NOISE_WORDS:
25875 			case TWO_DIGIT_YEAR_CUTOFF:
25876 			case PERSISTENT_LOG_BUFFER:
25877 			case DIRECTORY_NAME:
25878 			case DATEFORMAT:
25879 			case DELAYED_DURABILITY:
25880 			case AUTHORIZATION:
25881 			case TRANSFER:
25882 			case PROVIDER:
25883 			case SEARCH:
25884 			case MEMBER:
25885 			case IDENTIFIER_:
25886 			case DELIMITED_IDENTIFIER_:
25887 				enterOuterAlt(_localctx, 1);
25888 				{
25889 				setState(3679);
25890 				variableTableColumnDefinition();
25891 				}
25892 				break;
25893 			case PRIMARY:
25894 			case UNIQUE:
25895 			case CHECK:
25896 				enterOuterAlt(_localctx, 2);
25897 				{
25898 				setState(3680);
25899 				variableTableConstraint();
25900 				}
25901 				break;
25902 			default:
25903 				throw new NoViableAltException(this);
25904 			}
25905 		}
25906 		catch (RecognitionException re) {
25907 			_localctx.exception = re;
25908 			_errHandler.reportError(this, re);
25909 			_errHandler.recover(this, re);
25910 		}
25911 		finally {
25912 			exitRule();
25913 		}
25914 		return _localctx;
25915 	}
25916 
25917 	public static class VariableTableColumnDefinitionContext extends ParserRuleContext {
25918 		public ColumnNameContext columnName() {
25919 			return getRuleContext(ColumnNameContext.class,0);
25920 		}
25921 		public VariableTableColumnConstraintContext variableTableColumnConstraint() {
25922 			return getRuleContext(VariableTableColumnConstraintContext.class,0);
25923 		}
25924 		public DataTypeNameContext dataTypeName() {
25925 			return getRuleContext(DataTypeNameContext.class,0);
25926 		}
25927 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25928 		public List<ExprContext> expr() {
25929 			return getRuleContexts(ExprContext.class);
25930 		}
25931 		public ExprContext expr(int i) {
25932 			return getRuleContext(ExprContext.class,i);
25933 		}
25934 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
25935 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
25936 		public CollationNameContext collationName() {
25937 			return getRuleContext(CollationNameContext.class,0);
25938 		}
25939 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
25940 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
25941 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25942 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
25943 		public TerminalNode NUMBER_(int i) {
25944 			return getToken(SQLServerStatementParser.NUMBER_, i);
25945 		}
25946 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
25947 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25948 		public VariableTableColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
25949 			super(parent, invokingState);
25950 		}
25951 		@Override public int getRuleIndex() { return RULE_variableTableColumnDefinition; }
25952 		@Override
25953 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25954 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnDefinition(this);
25955 			else return visitor.visitChildren(this);
25956 		}
25957 	}
25958 
25959 	public final VariableTableColumnDefinitionContext variableTableColumnDefinition() throws RecognitionException {
25960 		VariableTableColumnDefinitionContext _localctx = new VariableTableColumnDefinitionContext(_ctx, getState());
25961 		enterRule(_localctx, 544, RULE_variableTableColumnDefinition);
25962 		int _la;
25963 		try {
25964 			enterOuterAlt(_localctx, 1);
25965 			{
25966 			setState(3683);
25967 			columnName();
25968 			setState(3687);
25969 			_errHandler.sync(this);
25970 			switch (_input.LA(1)) {
25971 			case CHAR:
25972 			case DATE:
25973 			case TIME:
25974 			case INTEGER:
25975 			case REAL:
25976 			case DECIMAL:
25977 			case BIT:
25978 			case SMALLINT:
25979 			case INT:
25980 			case TINYINT:
25981 			case NUMERIC:
25982 			case FLOAT:
25983 			case BIGINT:
25984 			case TEXT:
25985 			case VARCHAR:
25986 			case BINARY:
25987 			case XML:
25988 			case MONEY:
25989 			case SMALLMONEY:
25990 			case DATETIMEOFFSET:
25991 			case DATETIME:
25992 			case DATETIME2:
25993 			case SMALLDATETIME:
25994 			case NCHAR:
25995 			case NVARCHAR:
25996 			case NTEXT:
25997 			case VARBINARY:
25998 			case IMAGE:
25999 			case SQL_VARIANT:
26000 			case UNIQUEIDENTIFIER:
26001 			case HIERARCHYID:
26002 			case GEOMETRY:
26003 			case GEOGRAPHY:
26004 			case IDENTIFIER_:
26005 				{
26006 				setState(3684);
26007 				dataTypeName();
26008 				}
26009 				break;
26010 			case AS:
26011 				{
26012 				setState(3685);
26013 				match(AS);
26014 				setState(3686);
26015 				expr(0);
26016 				}
26017 				break;
26018 			default:
26019 				throw new NoViableAltException(this);
26020 			}
26021 			setState(3691);
26022 			_errHandler.sync(this);
26023 			_la = _input.LA(1);
26024 			if (_la==COLLATE) {
26025 				{
26026 				setState(3689);
26027 				match(COLLATE);
26028 				setState(3690);
26029 				collationName();
26030 				}
26031 			}
26032 
26033 			setState(3705);
26034 			_errHandler.sync(this);
26035 			switch (_input.LA(1)) {
26036 			case RP_:
26037 			case COMMA_:
26038 			case PRIMARY:
26039 			case UNIQUE:
26040 			case WITH:
26041 			case NOT:
26042 			case NULL:
26043 			case DEFAULT:
26044 			case CHECK:
26045 			case ROWGUIDCOL:
26046 				{
26047 				setState(3695);
26048 				_errHandler.sync(this);
26049 				_la = _input.LA(1);
26050 				if (_la==DEFAULT) {
26051 					{
26052 					setState(3693);
26053 					match(DEFAULT);
26054 					setState(3694);
26055 					expr(0);
26056 					}
26057 				}
26058 
26059 				}
26060 				break;
26061 			case IDENTITY:
26062 				{
26063 				setState(3697);
26064 				match(IDENTITY);
26065 				setState(3703);
26066 				_errHandler.sync(this);
26067 				_la = _input.LA(1);
26068 				if (_la==LP_) {
26069 					{
26070 					setState(3698);
26071 					match(LP_);
26072 					setState(3699);
26073 					match(NUMBER_);
26074 					setState(3700);
26075 					match(COMMA_);
26076 					setState(3701);
26077 					match(NUMBER_);
26078 					setState(3702);
26079 					match(RP_);
26080 					}
26081 				}
26082 
26083 				}
26084 				break;
26085 			default:
26086 				throw new NoViableAltException(this);
26087 			}
26088 			setState(3708);
26089 			_errHandler.sync(this);
26090 			_la = _input.LA(1);
26091 			if (_la==ROWGUIDCOL) {
26092 				{
26093 				setState(3707);
26094 				match(ROWGUIDCOL);
26095 				}
26096 			}
26097 
26098 			setState(3710);
26099 			variableTableColumnConstraint();
26100 			}
26101 		}
26102 		catch (RecognitionException re) {
26103 			_localctx.exception = re;
26104 			_errHandler.reportError(this, re);
26105 			_errHandler.recover(this, re);
26106 		}
26107 		finally {
26108 			exitRule();
26109 		}
26110 		return _localctx;
26111 	}
26112 
26113 	public static class VariableTableColumnConstraintContext extends ParserRuleContext {
26114 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
26115 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
26116 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
26117 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
26118 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
26119 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
26120 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26121 		public ExprContext expr() {
26122 			return getRuleContext(ExprContext.class,0);
26123 		}
26124 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26125 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26126 		public IndexOptionContext indexOption() {
26127 			return getRuleContext(IndexOptionContext.class,0);
26128 		}
26129 		public VariableTableColumnConstraintContext(ParserRuleContext parent, int invokingState) {
26130 			super(parent, invokingState);
26131 		}
26132 		@Override public int getRuleIndex() { return RULE_variableTableColumnConstraint; }
26133 		@Override
26134 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26135 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnConstraint(this);
26136 			else return visitor.visitChildren(this);
26137 		}
26138 	}
26139 
26140 	public final VariableTableColumnConstraintContext variableTableColumnConstraint() throws RecognitionException {
26141 		VariableTableColumnConstraintContext _localctx = new VariableTableColumnConstraintContext(_ctx, getState());
26142 		enterRule(_localctx, 546, RULE_variableTableColumnConstraint);
26143 		try {
26144 			setState(3729);
26145 			_errHandler.sync(this);
26146 			switch ( getInterpreter().adaptivePredict(_input,368,_ctx) ) {
26147 			case 1:
26148 				enterOuterAlt(_localctx, 1);
26149 				{
26150 				setState(3715);
26151 				_errHandler.sync(this);
26152 				switch (_input.LA(1)) {
26153 				case NULL:
26154 					{
26155 					setState(3712);
26156 					match(NULL);
26157 					}
26158 					break;
26159 				case NOT:
26160 					{
26161 					setState(3713);
26162 					match(NOT);
26163 					setState(3714);
26164 					match(NULL);
26165 					}
26166 					break;
26167 				case RP_:
26168 				case COMMA_:
26169 					break;
26170 				default:
26171 					break;
26172 				}
26173 				}
26174 				break;
26175 			case 2:
26176 				enterOuterAlt(_localctx, 2);
26177 				{
26178 				setState(3720);
26179 				_errHandler.sync(this);
26180 				switch (_input.LA(1)) {
26181 				case PRIMARY:
26182 					{
26183 					setState(3717);
26184 					match(PRIMARY);
26185 					setState(3718);
26186 					match(KEY);
26187 					}
26188 					break;
26189 				case UNIQUE:
26190 					{
26191 					setState(3719);
26192 					match(UNIQUE);
26193 					}
26194 					break;
26195 				case RP_:
26196 				case COMMA_:
26197 					break;
26198 				default:
26199 					break;
26200 				}
26201 				}
26202 				break;
26203 			case 3:
26204 				enterOuterAlt(_localctx, 3);
26205 				{
26206 				setState(3722);
26207 				match(CHECK);
26208 				setState(3723);
26209 				match(LP_);
26210 				setState(3724);
26211 				expr(0);
26212 				setState(3725);
26213 				match(RP_);
26214 				}
26215 				break;
26216 			case 4:
26217 				enterOuterAlt(_localctx, 4);
26218 				{
26219 				setState(3727);
26220 				match(WITH);
26221 				setState(3728);
26222 				indexOption();
26223 				}
26224 				break;
26225 			}
26226 		}
26227 		catch (RecognitionException re) {
26228 			_localctx.exception = re;
26229 			_errHandler.reportError(this, re);
26230 			_errHandler.recover(this, re);
26231 		}
26232 		finally {
26233 			exitRule();
26234 		}
26235 		return _localctx;
26236 	}
26237 
26238 	public static class VariableTableConstraintContext extends ParserRuleContext {
26239 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26240 		public List<ColumnNameContext> columnName() {
26241 			return getRuleContexts(ColumnNameContext.class);
26242 		}
26243 		public ColumnNameContext columnName(int i) {
26244 			return getRuleContext(ColumnNameContext.class,i);
26245 		}
26246 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26247 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
26248 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
26249 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
26250 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26251 		public TerminalNode COMMA_(int i) {
26252 			return getToken(SQLServerStatementParser.COMMA_, i);
26253 		}
26254 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
26255 		public ExprContext expr() {
26256 			return getRuleContext(ExprContext.class,0);
26257 		}
26258 		public VariableTableConstraintContext(ParserRuleContext parent, int invokingState) {
26259 			super(parent, invokingState);
26260 		}
26261 		@Override public int getRuleIndex() { return RULE_variableTableConstraint; }
26262 		@Override
26263 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26264 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableConstraint(this);
26265 			else return visitor.visitChildren(this);
26266 		}
26267 	}
26268 
26269 	public final VariableTableConstraintContext variableTableConstraint() throws RecognitionException {
26270 		VariableTableConstraintContext _localctx = new VariableTableConstraintContext(_ctx, getState());
26271 		enterRule(_localctx, 548, RULE_variableTableConstraint);
26272 		int _la;
26273 		try {
26274 			setState(3749);
26275 			_errHandler.sync(this);
26276 			switch (_input.LA(1)) {
26277 			case PRIMARY:
26278 			case UNIQUE:
26279 				enterOuterAlt(_localctx, 1);
26280 				{
26281 				setState(3734);
26282 				_errHandler.sync(this);
26283 				switch (_input.LA(1)) {
26284 				case PRIMARY:
26285 					{
26286 					setState(3731);
26287 					match(PRIMARY);
26288 					setState(3732);
26289 					match(KEY);
26290 					}
26291 					break;
26292 				case UNIQUE:
26293 					{
26294 					setState(3733);
26295 					match(UNIQUE);
26296 					}
26297 					break;
26298 				default:
26299 					throw new NoViableAltException(this);
26300 				}
26301 				setState(3736);
26302 				match(LP_);
26303 				setState(3737);
26304 				columnName();
26305 				setState(3742);
26306 				_errHandler.sync(this);
26307 				_la = _input.LA(1);
26308 				while (_la==COMMA_) {
26309 					{
26310 					{
26311 					setState(3738);
26312 					match(COMMA_);
26313 					setState(3739);
26314 					columnName();
26315 					}
26316 					}
26317 					setState(3744);
26318 					_errHandler.sync(this);
26319 					_la = _input.LA(1);
26320 				}
26321 				setState(3745);
26322 				match(RP_);
26323 				}
26324 				break;
26325 			case CHECK:
26326 				enterOuterAlt(_localctx, 2);
26327 				{
26328 				setState(3747);
26329 				match(CHECK);
26330 				setState(3748);
26331 				expr(0);
26332 				}
26333 				break;
26334 			default:
26335 				throw new NoViableAltException(this);
26336 			}
26337 		}
26338 		catch (RecognitionException re) {
26339 			_localctx.exception = re;
26340 			_errHandler.reportError(this, re);
26341 			_errHandler.recover(this, re);
26342 		}
26343 		finally {
26344 			exitRule();
26345 		}
26346 		return _localctx;
26347 	}
26348 
26349 	public static class SetVariableContext extends ParserRuleContext {
26350 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
26351 		public VariableNameContext variableName() {
26352 			return getRuleContext(VariableNameContext.class,0);
26353 		}
26354 		public SetVariableClauseContext setVariableClause() {
26355 			return getRuleContext(SetVariableClauseContext.class,0);
26356 		}
26357 		public SetVariableContext(ParserRuleContext parent, int invokingState) {
26358 			super(parent, invokingState);
26359 		}
26360 		@Override public int getRuleIndex() { return RULE_setVariable; }
26361 		@Override
26362 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26363 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariable(this);
26364 			else return visitor.visitChildren(this);
26365 		}
26366 	}
26367 
26368 	public final SetVariableContext setVariable() throws RecognitionException {
26369 		SetVariableContext _localctx = new SetVariableContext(_ctx, getState());
26370 		enterRule(_localctx, 550, RULE_setVariable);
26371 		try {
26372 			enterOuterAlt(_localctx, 1);
26373 			{
26374 			setState(3751);
26375 			match(SET);
26376 			setState(3752);
26377 			variableName();
26378 			setState(3753);
26379 			setVariableClause();
26380 			}
26381 		}
26382 		catch (RecognitionException re) {
26383 			_localctx.exception = re;
26384 			_errHandler.reportError(this, re);
26385 			_errHandler.recover(this, re);
26386 		}
26387 		finally {
26388 			exitRule();
26389 		}
26390 		return _localctx;
26391 	}
26392 
26393 	public static class SetVariableClauseContext extends ParserRuleContext {
26394 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26395 		public ExprContext expr() {
26396 			return getRuleContext(ExprContext.class,0);
26397 		}
26398 		public List<IdentifierContext> identifier() {
26399 			return getRuleContexts(IdentifierContext.class);
26400 		}
26401 		public IdentifierContext identifier(int i) {
26402 			return getRuleContext(IdentifierContext.class,i);
26403 		}
26404 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
26405 		public TerminalNode DOT_(int i) {
26406 			return getToken(SQLServerStatementParser.DOT_, i);
26407 		}
26408 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
26409 		public CompoundOperationContext compoundOperation() {
26410 			return getRuleContext(CompoundOperationContext.class,0);
26411 		}
26412 		public CursorVariableContext cursorVariable() {
26413 			return getRuleContext(CursorVariableContext.class,0);
26414 		}
26415 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26416 		public SelectContext select() {
26417 			return getRuleContext(SelectContext.class,0);
26418 		}
26419 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26420 		public SetVariableClauseContext(ParserRuleContext parent, int invokingState) {
26421 			super(parent, invokingState);
26422 		}
26423 		@Override public int getRuleIndex() { return RULE_setVariableClause; }
26424 		@Override
26425 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26426 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariableClause(this);
26427 			else return visitor.visitChildren(this);
26428 		}
26429 	}
26430 
26431 	public final SetVariableClauseContext setVariableClause() throws RecognitionException {
26432 		SetVariableClauseContext _localctx = new SetVariableClauseContext(_ctx, getState());
26433 		enterRule(_localctx, 552, RULE_setVariableClause);
26434 		int _la;
26435 		try {
26436 			setState(3778);
26437 			_errHandler.sync(this);
26438 			switch ( getInterpreter().adaptivePredict(_input,374,_ctx) ) {
26439 			case 1:
26440 				enterOuterAlt(_localctx, 1);
26441 				{
26442 				setState(3757);
26443 				_errHandler.sync(this);
26444 				_la = _input.LA(1);
26445 				if (_la==DOT_) {
26446 					{
26447 					setState(3755);
26448 					match(DOT_);
26449 					setState(3756);
26450 					identifier();
26451 					}
26452 				}
26453 
26454 				setState(3759);
26455 				match(EQ_);
26456 				setState(3766);
26457 				_errHandler.sync(this);
26458 				switch ( getInterpreter().adaptivePredict(_input,373,_ctx) ) {
26459 				case 1:
26460 					{
26461 					setState(3760);
26462 					expr(0);
26463 					}
26464 					break;
26465 				case 2:
26466 					{
26467 					setState(3761);
26468 					identifier();
26469 					setState(3762);
26470 					match(DOT_);
26471 					setState(3763);
26472 					identifier();
26473 					}
26474 					break;
26475 				case 3:
26476 					{
26477 					setState(3765);
26478 					match(NCHAR_TEXT);
26479 					}
26480 					break;
26481 				}
26482 				}
26483 				break;
26484 			case 2:
26485 				enterOuterAlt(_localctx, 2);
26486 				{
26487 				setState(3768);
26488 				compoundOperation();
26489 				setState(3769);
26490 				expr(0);
26491 				}
26492 				break;
26493 			case 3:
26494 				enterOuterAlt(_localctx, 3);
26495 				{
26496 				setState(3771);
26497 				match(EQ_);
26498 				setState(3772);
26499 				cursorVariable();
26500 				}
26501 				break;
26502 			case 4:
26503 				enterOuterAlt(_localctx, 4);
26504 				{
26505 				setState(3773);
26506 				match(EQ_);
26507 				setState(3774);
26508 				match(LP_);
26509 				setState(3775);
26510 				select();
26511 				setState(3776);
26512 				match(RP_);
26513 				}
26514 				break;
26515 			}
26516 		}
26517 		catch (RecognitionException re) {
26518 			_localctx.exception = re;
26519 			_errHandler.reportError(this, re);
26520 			_errHandler.recover(this, re);
26521 		}
26522 		finally {
26523 			exitRule();
26524 		}
26525 		return _localctx;
26526 	}
26527 
26528 	public static class CursorVariableContext extends ParserRuleContext {
26529 		public VariableNameContext variableName() {
26530 			return getRuleContext(VariableNameContext.class,0);
26531 		}
26532 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
26533 		public CursorClauseContext cursorClause() {
26534 			return getRuleContext(CursorClauseContext.class,0);
26535 		}
26536 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
26537 		public TerminalNode FOR(int i) {
26538 			return getToken(SQLServerStatementParser.FOR, i);
26539 		}
26540 		public SelectContext select() {
26541 			return getRuleContext(SelectContext.class,0);
26542 		}
26543 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
26544 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
26545 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
26546 		public List<NameContext> name() {
26547 			return getRuleContexts(NameContext.class);
26548 		}
26549 		public NameContext name(int i) {
26550 			return getRuleContext(NameContext.class,i);
26551 		}
26552 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26553 		public TerminalNode COMMA_(int i) {
26554 			return getToken(SQLServerStatementParser.COMMA_, i);
26555 		}
26556 		public CursorVariableContext(ParserRuleContext parent, int invokingState) {
26557 			super(parent, invokingState);
26558 		}
26559 		@Override public int getRuleIndex() { return RULE_cursorVariable; }
26560 		@Override
26561 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26562 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorVariable(this);
26563 			else return visitor.visitChildren(this);
26564 		}
26565 	}
26566 
26567 	public final CursorVariableContext cursorVariable() throws RecognitionException {
26568 		CursorVariableContext _localctx = new CursorVariableContext(_ctx, getState());
26569 		enterRule(_localctx, 554, RULE_cursorVariable);
26570 		int _la;
26571 		try {
26572 			setState(3799);
26573 			_errHandler.sync(this);
26574 			switch (_input.LA(1)) {
26575 			case TRUNCATE:
26576 			case SCHEMA:
26577 			case COLUMNS:
26578 			case PRECISION:
26579 			case FUNCTION:
26580 			case TRIGGER:
26581 			case CAST:
26582 			case TRIM:
26583 			case SUBSTRING:
26584 			case OFF:
26585 			case GROUP:
26586 			case LIMIT:
26587 			case OFFSET:
26588 			case SAVEPOINT:
26589 			case BOOLEAN:
26590 			case ARRAY:
26591 			case DATE:
26592 			case TIMESTAMP:
26593 			case LOCALTIME:
26594 			case LOCALTIMESTAMP:
26595 			case YEAR:
26596 			case QUARTER:
26597 			case MONTH:
26598 			case WEEK:
26599 			case DAY:
26600 			case SECOND:
26601 			case MICROSECOND:
26602 			case MAX:
26603 			case MIN:
26604 			case SUM:
26605 			case COUNT:
26606 			case AVG:
26607 			case ENABLE:
26608 			case DISABLE:
26609 			case INSTANCE:
26610 			case DO:
26611 			case DEFINER:
26612 			case SQL:
26613 			case CASCADED:
26614 			case LOCAL:
26615 			case NEXT:
26616 			case NAME:
26617 			case INTEGER:
26618 			case TYPE:
26619 			case TEXT:
26620 			case VIEWS:
26621 			case READ_ONLY:
26622 			case DATABASE:
26623 			case RETURNS:
26624 			case DATEPART:
26625 			case PASSWORD:
26626 			case BINARY:
26627 			case HIDDEN_:
26628 			case MOD:
26629 			case PARTITION:
26630 			case PARTITIONS:
26631 			case TOP:
26632 			case ROW:
26633 			case ROWS:
26634 			case XOR:
26635 			case ALWAYS:
26636 			case ROLE:
26637 			case START:
26638 			case ALGORITHM:
26639 			case AUTO:
26640 			case BLOCKERS:
26641 			case CLUSTERED:
26642 			case NONCLUSTERED:
26643 			case COLUMNSTORE:
26644 			case CONTENT:
26645 			case YEARS:
26646 			case MONTHS:
26647 			case WEEKS:
26648 			case DAYS:
26649 			case MINUTES:
26650 			case DENY:
26651 			case DETERMINISTIC:
26652 			case DISTRIBUTION:
26653 			case DOCUMENT:
26654 			case DURABILITY:
26655 			case ENCRYPTED:
26656 			case FILESTREAM:
26657 			case FILETABLE:
26658 			case FILLFACTOR:
26659 			case FOLLOWING:
26660 			case HASH:
26661 			case HEAP:
26662 			case INBOUND:
26663 			case OUTBOUND:
26664 			case UNBOUNDED:
26665 			case INFINITE:
26666 			case LOGIN:
26667 			case MASKED:
26668 			case MAXDOP:
26669 			case MOVE:
26670 			case NOCHECK:
26671 			case OBJECT:
26672 			case ONLINE:
26673 			case OVER:
26674 			case PAGE:
26675 			case PAUSED:
26676 			case PERIOD:
26677 			case PERSISTED:
26678 			case PRECEDING:
26679 			case RANDOMIZED:
26680 			case RANGE:
26681 			case REBUILD:
26682 			case REPLICATE:
26683 			case REPLICATION:
26684 			case RESUMABLE:
26685 			case ROWGUIDCOL:
26686 			case SAVE:
26687 			case SELF:
26688 			case SPARSE:
26689 			case SWITCH:
26690 			case TRAN:
26691 			case TRANCOUNT:
26692 			case CONTROL:
26693 			case CONCAT:
26694 			case TAKE:
26695 			case OWNERSHIP:
26696 			case DEFINITION:
26697 			case APPLICATION:
26698 			case ASSEMBLY:
26699 			case SYMMETRIC:
26700 			case ASYMMETRIC:
26701 			case SERVER:
26702 			case RECEIVE:
26703 			case CHANGE:
26704 			case TRACE:
26705 			case TRACKING:
26706 			case RESOURCES:
26707 			case SETTINGS:
26708 			case STATE:
26709 			case AVAILABILITY:
26710 			case CREDENTIAL:
26711 			case ENDPOINT:
26712 			case EVENT:
26713 			case NOTIFICATION:
26714 			case LINKED:
26715 			case AUDIT:
26716 			case DDL:
26717 			case XML:
26718 			case IMPERSONATE:
26719 			case SECURABLES:
26720 			case AUTHENTICATE:
26721 			case EXTERNAL:
26722 			case ACCESS:
26723 			case ADMINISTER:
26724 			case BULK:
26725 			case OPERATIONS:
26726 			case UNSAFE:
26727 			case SHUTDOWN:
26728 			case SCOPED:
26729 			case CONFIGURATION:
26730 			case DATASPACE:
26731 			case SERVICE:
26732 			case CERTIFICATE:
26733 			case CONTRACT:
26734 			case ENCRYPTION:
26735 			case MASTER:
26736 			case DATA:
26737 			case SOURCE:
26738 			case FILE:
26739 			case FORMAT:
26740 			case LIBRARY:
26741 			case FULLTEXT:
26742 			case MASK:
26743 			case UNMASK:
26744 			case MESSAGE:
26745 			case REMOTE:
26746 			case BINDING:
26747 			case ROUTE:
26748 			case SECURITY:
26749 			case POLICY:
26750 			case AGGREGATE:
26751 			case QUEUE:
26752 			case RULE:
26753 			case SYNONYM:
26754 			case COLLECTION:
26755 			case SCRIPT:
26756 			case KILL:
26757 			case BACKUP:
26758 			case LOG:
26759 			case SHOWPLAN:
26760 			case SUBSCRIBE:
26761 			case QUERY:
26762 			case NOTIFICATIONS:
26763 			case CHECKPOINT:
26764 			case SEQUENCE:
26765 			case ABORT_AFTER_WAIT:
26766 			case ALLOW_PAGE_LOCKS:
26767 			case ALLOW_ROW_LOCKS:
26768 			case ALL_SPARSE_COLUMNS:
26769 			case BUCKET_COUNT:
26770 			case COLUMNSTORE_ARCHIVE:
26771 			case COLUMN_ENCRYPTION_KEY:
26772 			case COLUMN_SET:
26773 			case COMPRESSION_DELAY:
26774 			case DATABASE_DEAULT:
26775 			case DATA_COMPRESSION:
26776 			case DATA_CONSISTENCY_CHECK:
26777 			case ENCRYPTION_TYPE:
26778 			case SYSTEM_TIME:
26779 			case SYSTEM_VERSIONING:
26780 			case TEXTIMAGE_ON:
26781 			case WAIT_AT_LOW_PRIORITY:
26782 			case STATISTICS_INCREMENTAL:
26783 			case STATISTICS_NORECOMPUTE:
26784 			case ROUND_ROBIN:
26785 			case SCHEMA_AND_DATA:
26786 			case SCHEMA_ONLY:
26787 			case SORT_IN_TEMPDB:
26788 			case IGNORE_DUP_KEY:
26789 			case IMPLICIT_TRANSACTIONS:
26790 			case MAX_DURATION:
26791 			case MEMORY_OPTIMIZED:
26792 			case MIGRATION_STATE:
26793 			case PAD_INDEX:
26794 			case REMOTE_DATA_ARCHIVE:
26795 			case FILESTREAM_ON:
26796 			case FILETABLE_COLLATE_FILENAME:
26797 			case FILETABLE_DIRECTORY:
26798 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
26799 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
26800 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
26801 			case FILTER_PREDICATE:
26802 			case HISTORY_RETENTION_PERIOD:
26803 			case HISTORY_TABLE:
26804 			case LOCK_ESCALATION:
26805 			case DROP_EXISTING:
26806 			case ROW_NUMBER:
26807 			case FIRST:
26808 			case DATETIME2:
26809 			case OUTPUT:
26810 			case INSERTED:
26811 			case DELETED:
26812 			case FILENAME:
26813 			case SIZE:
26814 			case MAXSIZE:
26815 			case FILEGROWTH:
26816 			case UNLIMITED:
26817 			case KB:
26818 			case MB:
26819 			case GB:
26820 			case TB:
26821 			case CONTAINS:
26822 			case MEMORY_OPTIMIZED_DATA:
26823 			case FILEGROUP:
26824 			case NON_TRANSACTED_ACCESS:
26825 			case DB_CHAINING:
26826 			case TRUSTWORTHY:
26827 			case FORWARD_ONLY:
26828 			case KEYSET:
26829 			case FAST_FORWARD:
26830 			case SCROLL_LOCKS:
26831 			case OPTIMISTIC:
26832 			case TYPE_WARNING:
26833 			case SCHEMABINDING:
26834 			case CALLER:
26835 			case INPUT:
26836 			case OWNER:
26837 			case SNAPSHOT:
26838 			case REPEATABLE:
26839 			case SERIALIZABLE:
26840 			case NATIVE_COMPILATION:
26841 			case VIEW_METADATA:
26842 			case INSTEAD:
26843 			case APPEND:
26844 			case INCREMENT:
26845 			case CACHE:
26846 			case MINVALUE:
26847 			case MAXVALUE:
26848 			case RESTART:
26849 			case LOB_COMPACTION:
26850 			case COMPRESS_ALL_ROW_GROUPS:
26851 			case REORGANIZE:
26852 			case RESUME:
26853 			case PAUSE:
26854 			case ABORT:
26855 			case ACCELERATED_DATABASE_RECOVERY:
26856 			case PERSISTENT_VERSION_STORE_FILEGROUP:
26857 			case IMMEDIATE:
26858 			case NO_WAIT:
26859 			case TARGET_RECOVERY_TIME:
26860 			case SECONDS:
26861 			case HONOR_BROKER_PRIORITY:
26862 			case ERROR_BROKER_CONVERSATIONS:
26863 			case NEW_BROKER:
26864 			case DISABLE_BROKER:
26865 			case ENABLE_BROKER:
26866 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
26867 			case READ_COMMITTED_SNAPSHOT:
26868 			case ALLOW_SNAPSHOT_ISOLATION:
26869 			case RECURSIVE_TRIGGERS:
26870 			case QUOTED_IDENTIFIER:
26871 			case NUMERIC_ROUNDABORT:
26872 			case CONCAT_NULL_YIELDS_NULL:
26873 			case COMPATIBILITY_LEVEL:
26874 			case ARITHABORT:
26875 			case ANSI_WARNINGS:
26876 			case ANSI_PADDING:
26877 			case ANSI_NULLS:
26878 			case ANSI_NULL_DEFAULT:
26879 			case PAGE_VERIFY:
26880 			case CHECKSUM:
26881 			case TORN_PAGE_DETECTION:
26882 			case BULK_LOGGED:
26883 			case RECOVERY:
26884 			case TOTAL_EXECUTION_CPU_TIME_MS:
26885 			case TOTAL_COMPILE_CPU_TIME_MS:
26886 			case STALE_CAPTURE_POLICY_THRESHOLD:
26887 			case EXECUTION_COUNT:
26888 			case QUERY_CAPTURE_POLICY:
26889 			case WAIT_STATS_CAPTURE_MODE:
26890 			case MAX_PLANS_PER_QUERY:
26891 			case QUERY_CAPTURE_MODE:
26892 			case SIZE_BASED_CLEANUP_MODE:
26893 			case INTERVAL_LENGTH_MINUTES:
26894 			case MAX_STORAGE_SIZE_MB:
26895 			case DATA_FLUSH_INTERVAL_SECONDS:
26896 			case CLEANUP_POLICY:
26897 			case CUSTOM:
26898 			case STALE_QUERY_THRESHOLD_DAYS:
26899 			case OPERATION_MODE:
26900 			case QUERY_STORE:
26901 			case CURSOR_DEFAULT:
26902 			case GLOBAL:
26903 			case CURSOR_CLOSE_ON_COMMIT:
26904 			case HOURS:
26905 			case CHANGE_RETENTION:
26906 			case AUTO_CLEANUP:
26907 			case CHANGE_TRACKING:
26908 			case AUTOMATIC_TUNING:
26909 			case FORCE_LAST_GOOD_PLAN:
26910 			case AUTO_UPDATE_STATISTICS_ASYNC:
26911 			case AUTO_UPDATE_STATISTICS:
26912 			case AUTO_SHRINK:
26913 			case AUTO_CREATE_STATISTICS:
26914 			case INCREMENTAL:
26915 			case AUTO_CLOSE:
26916 			case DATA_RETENTION:
26917 			case TEMPORAL_HISTORY_RETENTION:
26918 			case EDITION:
26919 			case MIXED_PAGE_ALLOCATION:
26920 			case DISABLED:
26921 			case ALLOWED:
26922 			case HADR:
26923 			case MULTI_USER:
26924 			case RESTRICTED_USER:
26925 			case SINGLE_USER:
26926 			case OFFLINE:
26927 			case EMERGENCY:
26928 			case SUSPEND:
26929 			case DATE_CORRELATION_OPTIMIZATION:
26930 			case ELASTIC_POOL:
26931 			case SERVICE_OBJECTIVE:
26932 			case DATABASE_NAME:
26933 			case ALLOW_CONNECTIONS:
26934 			case GEO:
26935 			case NAMED:
26936 			case DATEFIRST:
26937 			case BACKUP_STORAGE_REDUNDANCY:
26938 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
26939 			case SECONDARY:
26940 			case FAILOVER:
26941 			case DEFAULT_FULLTEXT_LANGUAGE:
26942 			case DEFAULT_LANGUAGE:
26943 			case INLINE:
26944 			case NESTED_TRIGGERS:
26945 			case TRANSFORM_NOISE_WORDS:
26946 			case TWO_DIGIT_YEAR_CUTOFF:
26947 			case PERSISTENT_LOG_BUFFER:
26948 			case DIRECTORY_NAME:
26949 			case DATEFORMAT:
26950 			case DELAYED_DURABILITY:
26951 			case AUTHORIZATION:
26952 			case TRANSFER:
26953 			case PROVIDER:
26954 			case SEARCH:
26955 			case MEMBER:
26956 			case IDENTIFIER_:
26957 			case DELIMITED_IDENTIFIER_:
26958 				enterOuterAlt(_localctx, 1);
26959 				{
26960 				setState(3780);
26961 				variableName();
26962 				}
26963 				break;
26964 			case CURSOR:
26965 				enterOuterAlt(_localctx, 2);
26966 				{
26967 				setState(3781);
26968 				match(CURSOR);
26969 				setState(3782);
26970 				cursorClause();
26971 				setState(3783);
26972 				match(FOR);
26973 				setState(3784);
26974 				select();
26975 				{
26976 				setState(3785);
26977 				match(FOR);
26978 				setState(3797);
26979 				_errHandler.sync(this);
26980 				switch (_input.LA(1)) {
26981 				case READ_ONLY:
26982 					{
26983 					setState(3786);
26984 					match(READ_ONLY);
26985 					}
26986 					break;
26987 				case UPDATE:
26988 					{
26989 					setState(3787);
26990 					match(UPDATE);
26991 					{
26992 					setState(3788);
26993 					match(OF);
26994 					setState(3789);
26995 					name();
26996 					setState(3794);
26997 					_errHandler.sync(this);
26998 					_la = _input.LA(1);
26999 					while (_la==COMMA_) {
27000 						{
27001 						{
27002 						setState(3790);
27003 						match(COMMA_);
27004 						setState(3791);
27005 						name();
27006 						}
27007 						}
27008 						setState(3796);
27009 						_errHandler.sync(this);
27010 						_la = _input.LA(1);
27011 					}
27012 					}
27013 					}
27014 					break;
27015 				default:
27016 					throw new NoViableAltException(this);
27017 				}
27018 				}
27019 				}
27020 				break;
27021 			default:
27022 				throw new NoViableAltException(this);
27023 			}
27024 		}
27025 		catch (RecognitionException re) {
27026 			_localctx.exception = re;
27027 			_errHandler.reportError(this, re);
27028 			_errHandler.recover(this, re);
27029 		}
27030 		finally {
27031 			exitRule();
27032 		}
27033 		return _localctx;
27034 	}
27035 
27036 	public static class CursorClauseContext extends ParserRuleContext {
27037 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
27038 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
27039 		public TerminalNode SCROLL() { return getToken(SQLServerStatementParser.SCROLL, 0); }
27040 		public TerminalNode STATIC() { return getToken(SQLServerStatementParser.STATIC, 0); }
27041 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
27042 		public TerminalNode DYNAMIC() { return getToken(SQLServerStatementParser.DYNAMIC, 0); }
27043 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
27044 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
27045 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
27046 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
27047 		public CursorClauseContext(ParserRuleContext parent, int invokingState) {
27048 			super(parent, invokingState);
27049 		}
27050 		@Override public int getRuleIndex() { return RULE_cursorClause; }
27051 		@Override
27052 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27053 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorClause(this);
27054 			else return visitor.visitChildren(this);
27055 		}
27056 	}
27057 
27058 	public final CursorClauseContext cursorClause() throws RecognitionException {
27059 		CursorClauseContext _localctx = new CursorClauseContext(_ctx, getState());
27060 		enterRule(_localctx, 556, RULE_cursorClause);
27061 		int _la;
27062 		try {
27063 			enterOuterAlt(_localctx, 1);
27064 			{
27065 			setState(3802);
27066 			_errHandler.sync(this);
27067 			_la = _input.LA(1);
27068 			if (_la==FORWARD_ONLY || _la==SCROLL) {
27069 				{
27070 				setState(3801);
27071 				_la = _input.LA(1);
27072 				if ( !(_la==FORWARD_ONLY || _la==SCROLL) ) {
27073 				_errHandler.recoverInline(this);
27074 				}
27075 				else {
27076 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27077 					_errHandler.reportMatch(this);
27078 					consume();
27079 				}
27080 				}
27081 			}
27082 
27083 			setState(3805);
27084 			_errHandler.sync(this);
27085 			_la = _input.LA(1);
27086 			if (((((_la - 521)) & ~0x3f) == 0 && ((1L << (_la - 521)) & ((1L << (STATIC - 521)) | (1L << (KEYSET - 521)) | (1L << (DYNAMIC - 521)) | (1L << (FAST_FORWARD - 521)))) != 0)) {
27087 				{
27088 				setState(3804);
27089 				_la = _input.LA(1);
27090 				if ( !(((((_la - 521)) & ~0x3f) == 0 && ((1L << (_la - 521)) & ((1L << (STATIC - 521)) | (1L << (KEYSET - 521)) | (1L << (DYNAMIC - 521)) | (1L << (FAST_FORWARD - 521)))) != 0)) ) {
27091 				_errHandler.recoverInline(this);
27092 				}
27093 				else {
27094 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27095 					_errHandler.reportMatch(this);
27096 					consume();
27097 				}
27098 				}
27099 			}
27100 
27101 			setState(3808);
27102 			_errHandler.sync(this);
27103 			_la = _input.LA(1);
27104 			if (_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) {
27105 				{
27106 				setState(3807);
27107 				_la = _input.LA(1);
27108 				if ( !(_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) ) {
27109 				_errHandler.recoverInline(this);
27110 				}
27111 				else {
27112 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27113 					_errHandler.reportMatch(this);
27114 					consume();
27115 				}
27116 				}
27117 			}
27118 
27119 			setState(3811);
27120 			_errHandler.sync(this);
27121 			_la = _input.LA(1);
27122 			if (_la==TYPE_WARNING) {
27123 				{
27124 				setState(3810);
27125 				match(TYPE_WARNING);
27126 				}
27127 			}
27128 
27129 			}
27130 		}
27131 		catch (RecognitionException re) {
27132 			_localctx.exception = re;
27133 			_errHandler.reportError(this, re);
27134 			_errHandler.recover(this, re);
27135 		}
27136 		finally {
27137 			exitRule();
27138 		}
27139 		return _localctx;
27140 	}
27141 
27142 	public static class CompoundOperationContext extends ParserRuleContext {
27143 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
27144 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
27145 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
27146 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
27147 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
27148 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
27149 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
27150 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
27151 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
27152 		public CompoundOperationContext(ParserRuleContext parent, int invokingState) {
27153 			super(parent, invokingState);
27154 		}
27155 		@Override public int getRuleIndex() { return RULE_compoundOperation; }
27156 		@Override
27157 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27158 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundOperation(this);
27159 			else return visitor.visitChildren(this);
27160 		}
27161 	}
27162 
27163 	public final CompoundOperationContext compoundOperation() throws RecognitionException {
27164 		CompoundOperationContext _localctx = new CompoundOperationContext(_ctx, getState());
27165 		enterRule(_localctx, 558, RULE_compoundOperation);
27166 		try {
27167 			setState(3829);
27168 			_errHandler.sync(this);
27169 			switch (_input.LA(1)) {
27170 			case PLUS_:
27171 				enterOuterAlt(_localctx, 1);
27172 				{
27173 				setState(3813);
27174 				match(PLUS_);
27175 				setState(3814);
27176 				match(EQ_);
27177 				}
27178 				break;
27179 			case MINUS_:
27180 				enterOuterAlt(_localctx, 2);
27181 				{
27182 				setState(3815);
27183 				match(MINUS_);
27184 				setState(3816);
27185 				match(EQ_);
27186 				}
27187 				break;
27188 			case ASTERISK_:
27189 				enterOuterAlt(_localctx, 3);
27190 				{
27191 				setState(3817);
27192 				match(ASTERISK_);
27193 				setState(3818);
27194 				match(EQ_);
27195 				}
27196 				break;
27197 			case SLASH_:
27198 				enterOuterAlt(_localctx, 4);
27199 				{
27200 				setState(3819);
27201 				match(SLASH_);
27202 				setState(3820);
27203 				match(EQ_);
27204 				}
27205 				break;
27206 			case MOD_:
27207 				enterOuterAlt(_localctx, 5);
27208 				{
27209 				setState(3821);
27210 				match(MOD_);
27211 				setState(3822);
27212 				match(EQ_);
27213 				}
27214 				break;
27215 			case AMPERSAND_:
27216 				enterOuterAlt(_localctx, 6);
27217 				{
27218 				setState(3823);
27219 				match(AMPERSAND_);
27220 				setState(3824);
27221 				match(EQ_);
27222 				}
27223 				break;
27224 			case CARET_:
27225 				enterOuterAlt(_localctx, 7);
27226 				{
27227 				setState(3825);
27228 				match(CARET_);
27229 				setState(3826);
27230 				match(EQ_);
27231 				}
27232 				break;
27233 			case VERTICAL_BAR_:
27234 				enterOuterAlt(_localctx, 8);
27235 				{
27236 				setState(3827);
27237 				match(VERTICAL_BAR_);
27238 				setState(3828);
27239 				match(EQ_);
27240 				}
27241 				break;
27242 			default:
27243 				throw new NoViableAltException(this);
27244 			}
27245 		}
27246 		catch (RecognitionException re) {
27247 			_localctx.exception = re;
27248 			_errHandler.reportError(this, re);
27249 			_errHandler.recover(this, re);
27250 		}
27251 		finally {
27252 			exitRule();
27253 		}
27254 		return _localctx;
27255 	}
27256 
27257 	public static class FuncParametersContext extends ParserRuleContext {
27258 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
27259 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
27260 		public List<VariableNameContext> variableName() {
27261 			return getRuleContexts(VariableNameContext.class);
27262 		}
27263 		public VariableNameContext variableName(int i) {
27264 			return getRuleContext(VariableNameContext.class,i);
27265 		}
27266 		public List<DataTypeContext> dataType() {
27267 			return getRuleContexts(DataTypeContext.class);
27268 		}
27269 		public DataTypeContext dataType(int i) {
27270 			return getRuleContext(DataTypeContext.class,i);
27271 		}
27272 		public List<TerminalNode> AS() { return getTokens(SQLServerStatementParser.AS); }
27273 		public TerminalNode AS(int i) {
27274 			return getToken(SQLServerStatementParser.AS, i);
27275 		}
27276 		public List<OwnerContext> owner() {
27277 			return getRuleContexts(OwnerContext.class);
27278 		}
27279 		public OwnerContext owner(int i) {
27280 			return getRuleContext(OwnerContext.class,i);
27281 		}
27282 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
27283 		public TerminalNode DOT_(int i) {
27284 			return getToken(SQLServerStatementParser.DOT_, i);
27285 		}
27286 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
27287 		public TerminalNode EQ_(int i) {
27288 			return getToken(SQLServerStatementParser.EQ_, i);
27289 		}
27290 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
27291 			return getRuleContexts(IgnoredIdentifierContext.class);
27292 		}
27293 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
27294 			return getRuleContext(IgnoredIdentifierContext.class,i);
27295 		}
27296 		public List<TerminalNode> READONLY() { return getTokens(SQLServerStatementParser.READONLY); }
27297 		public TerminalNode READONLY(int i) {
27298 			return getToken(SQLServerStatementParser.READONLY, i);
27299 		}
27300 		public FuncParametersContext(ParserRuleContext parent, int invokingState) {
27301 			super(parent, invokingState);
27302 		}
27303 		@Override public int getRuleIndex() { return RULE_funcParameters; }
27304 		@Override
27305 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27306 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncParameters(this);
27307 			else return visitor.visitChildren(this);
27308 		}
27309 	}
27310 
27311 	public final FuncParametersContext funcParameters() throws RecognitionException {
27312 		FuncParametersContext _localctx = new FuncParametersContext(_ctx, getState());
27313 		enterRule(_localctx, 560, RULE_funcParameters);
27314 		int _la;
27315 		try {
27316 			enterOuterAlt(_localctx, 1);
27317 			{
27318 			setState(3831);
27319 			match(LP_);
27320 			setState(3851);
27321 			_errHandler.sync(this);
27322 			_la = _input.LA(1);
27323 			while (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
27324 				{
27325 				{
27326 				setState(3832);
27327 				variableName();
27328 				setState(3834);
27329 				_errHandler.sync(this);
27330 				_la = _input.LA(1);
27331 				if (_la==AS) {
27332 					{
27333 					setState(3833);
27334 					match(AS);
27335 					}
27336 				}
27337 
27338 				setState(3839);
27339 				_errHandler.sync(this);
27340 				switch ( getInterpreter().adaptivePredict(_input,384,_ctx) ) {
27341 				case 1:
27342 					{
27343 					setState(3836);
27344 					owner();
27345 					setState(3837);
27346 					match(DOT_);
27347 					}
27348 					break;
27349 				}
27350 				setState(3841);
27351 				dataType();
27352 				setState(3844);
27353 				_errHandler.sync(this);
27354 				_la = _input.LA(1);
27355 				if (_la==EQ_) {
27356 					{
27357 					setState(3842);
27358 					match(EQ_);
27359 					setState(3843);
27360 					ignoredIdentifier();
27361 					}
27362 				}
27363 
27364 				setState(3847);
27365 				_errHandler.sync(this);
27366 				_la = _input.LA(1);
27367 				if (_la==READONLY) {
27368 					{
27369 					setState(3846);
27370 					match(READONLY);
27371 					}
27372 				}
27373 
27374 				}
27375 				}
27376 				setState(3853);
27377 				_errHandler.sync(this);
27378 				_la = _input.LA(1);
27379 			}
27380 			setState(3854);
27381 			match(RP_);
27382 			}
27383 		}
27384 		catch (RecognitionException re) {
27385 			_localctx.exception = re;
27386 			_errHandler.reportError(this, re);
27387 			_errHandler.recover(this, re);
27388 		}
27389 		finally {
27390 			exitRule();
27391 		}
27392 		return _localctx;
27393 	}
27394 
27395 	public static class FuncReturnsContext extends ParserRuleContext {
27396 		public FuncScalarReturnContext funcScalarReturn() {
27397 			return getRuleContext(FuncScalarReturnContext.class,0);
27398 		}
27399 		public FuncInlineReturnContext funcInlineReturn() {
27400 			return getRuleContext(FuncInlineReturnContext.class,0);
27401 		}
27402 		public FuncMutiReturnContext funcMutiReturn() {
27403 			return getRuleContext(FuncMutiReturnContext.class,0);
27404 		}
27405 		public FuncReturnsContext(ParserRuleContext parent, int invokingState) {
27406 			super(parent, invokingState);
27407 		}
27408 		@Override public int getRuleIndex() { return RULE_funcReturns; }
27409 		@Override
27410 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27411 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncReturns(this);
27412 			else return visitor.visitChildren(this);
27413 		}
27414 	}
27415 
27416 	public final FuncReturnsContext funcReturns() throws RecognitionException {
27417 		FuncReturnsContext _localctx = new FuncReturnsContext(_ctx, getState());
27418 		enterRule(_localctx, 562, RULE_funcReturns);
27419 		try {
27420 			setState(3859);
27421 			_errHandler.sync(this);
27422 			switch ( getInterpreter().adaptivePredict(_input,388,_ctx) ) {
27423 			case 1:
27424 				enterOuterAlt(_localctx, 1);
27425 				{
27426 				setState(3856);
27427 				funcScalarReturn();
27428 				}
27429 				break;
27430 			case 2:
27431 				enterOuterAlt(_localctx, 2);
27432 				{
27433 				setState(3857);
27434 				funcInlineReturn();
27435 				}
27436 				break;
27437 			case 3:
27438 				enterOuterAlt(_localctx, 3);
27439 				{
27440 				setState(3858);
27441 				funcMutiReturn();
27442 				}
27443 				break;
27444 			}
27445 		}
27446 		catch (RecognitionException re) {
27447 			_localctx.exception = re;
27448 			_errHandler.reportError(this, re);
27449 			_errHandler.recover(this, re);
27450 		}
27451 		finally {
27452 			exitRule();
27453 		}
27454 		return _localctx;
27455 	}
27456 
27457 	public static class FuncMutiReturnContext extends ParserRuleContext {
27458 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27459 		public VariableNameContext variableName() {
27460 			return getRuleContext(VariableNameContext.class,0);
27461 		}
27462 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
27463 		public CreateTableDefinitionsContext createTableDefinitions() {
27464 			return getRuleContext(CreateTableDefinitionsContext.class,0);
27465 		}
27466 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
27467 		public CompoundStatementContext compoundStatement() {
27468 			return getRuleContext(CompoundStatementContext.class,0);
27469 		}
27470 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
27471 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
27472 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27473 		public List<FunctionOptionContext> functionOption() {
27474 			return getRuleContexts(FunctionOptionContext.class);
27475 		}
27476 		public FunctionOptionContext functionOption(int i) {
27477 			return getRuleContext(FunctionOptionContext.class,i);
27478 		}
27479 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27480 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27481 		public TerminalNode COMMA_(int i) {
27482 			return getToken(SQLServerStatementParser.COMMA_, i);
27483 		}
27484 		public FuncMutiReturnContext(ParserRuleContext parent, int invokingState) {
27485 			super(parent, invokingState);
27486 		}
27487 		@Override public int getRuleIndex() { return RULE_funcMutiReturn; }
27488 		@Override
27489 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27490 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncMutiReturn(this);
27491 			else return visitor.visitChildren(this);
27492 		}
27493 	}
27494 
27495 	public final FuncMutiReturnContext funcMutiReturn() throws RecognitionException {
27496 		FuncMutiReturnContext _localctx = new FuncMutiReturnContext(_ctx, getState());
27497 		enterRule(_localctx, 564, RULE_funcMutiReturn);
27498 		int _la;
27499 		try {
27500 			enterOuterAlt(_localctx, 1);
27501 			{
27502 			setState(3861);
27503 			match(RETURNS);
27504 			setState(3862);
27505 			variableName();
27506 			setState(3863);
27507 			match(TABLE);
27508 			setState(3864);
27509 			createTableDefinitions();
27510 			setState(3874);
27511 			_errHandler.sync(this);
27512 			_la = _input.LA(1);
27513 			if (_la==WITH) {
27514 				{
27515 				setState(3865);
27516 				match(WITH);
27517 				setState(3866);
27518 				functionOption();
27519 				setState(3871);
27520 				_errHandler.sync(this);
27521 				_la = _input.LA(1);
27522 				while (_la==COMMA_) {
27523 					{
27524 					{
27525 					setState(3867);
27526 					match(COMMA_);
27527 					setState(3868);
27528 					functionOption();
27529 					}
27530 					}
27531 					setState(3873);
27532 					_errHandler.sync(this);
27533 					_la = _input.LA(1);
27534 				}
27535 				}
27536 			}
27537 
27538 			setState(3877);
27539 			_errHandler.sync(this);
27540 			_la = _input.LA(1);
27541 			if (_la==AS) {
27542 				{
27543 				setState(3876);
27544 				match(AS);
27545 				}
27546 			}
27547 
27548 			setState(3879);
27549 			match(BEGIN);
27550 			setState(3880);
27551 			compoundStatement();
27552 			setState(3881);
27553 			match(RETURN);
27554 			setState(3882);
27555 			match(END);
27556 			}
27557 		}
27558 		catch (RecognitionException re) {
27559 			_localctx.exception = re;
27560 			_errHandler.reportError(this, re);
27561 			_errHandler.recover(this, re);
27562 		}
27563 		finally {
27564 			exitRule();
27565 		}
27566 		return _localctx;
27567 	}
27568 
27569 	public static class FuncInlineReturnContext extends ParserRuleContext {
27570 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27571 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
27572 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
27573 		public SelectContext select() {
27574 			return getRuleContext(SelectContext.class,0);
27575 		}
27576 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27577 		public List<FunctionOptionContext> functionOption() {
27578 			return getRuleContexts(FunctionOptionContext.class);
27579 		}
27580 		public FunctionOptionContext functionOption(int i) {
27581 			return getRuleContext(FunctionOptionContext.class,i);
27582 		}
27583 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27584 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
27585 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
27586 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27587 		public TerminalNode COMMA_(int i) {
27588 			return getToken(SQLServerStatementParser.COMMA_, i);
27589 		}
27590 		public FuncInlineReturnContext(ParserRuleContext parent, int invokingState) {
27591 			super(parent, invokingState);
27592 		}
27593 		@Override public int getRuleIndex() { return RULE_funcInlineReturn; }
27594 		@Override
27595 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27596 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncInlineReturn(this);
27597 			else return visitor.visitChildren(this);
27598 		}
27599 	}
27600 
27601 	public final FuncInlineReturnContext funcInlineReturn() throws RecognitionException {
27602 		FuncInlineReturnContext _localctx = new FuncInlineReturnContext(_ctx, getState());
27603 		enterRule(_localctx, 566, RULE_funcInlineReturn);
27604 		int _la;
27605 		try {
27606 			enterOuterAlt(_localctx, 1);
27607 			{
27608 			setState(3884);
27609 			match(RETURNS);
27610 			setState(3885);
27611 			match(TABLE);
27612 			setState(3895);
27613 			_errHandler.sync(this);
27614 			_la = _input.LA(1);
27615 			if (_la==WITH) {
27616 				{
27617 				setState(3886);
27618 				match(WITH);
27619 				setState(3887);
27620 				functionOption();
27621 				setState(3892);
27622 				_errHandler.sync(this);
27623 				_la = _input.LA(1);
27624 				while (_la==COMMA_) {
27625 					{
27626 					{
27627 					setState(3888);
27628 					match(COMMA_);
27629 					setState(3889);
27630 					functionOption();
27631 					}
27632 					}
27633 					setState(3894);
27634 					_errHandler.sync(this);
27635 					_la = _input.LA(1);
27636 				}
27637 				}
27638 			}
27639 
27640 			setState(3898);
27641 			_errHandler.sync(this);
27642 			_la = _input.LA(1);
27643 			if (_la==AS) {
27644 				{
27645 				setState(3897);
27646 				match(AS);
27647 				}
27648 			}
27649 
27650 			setState(3900);
27651 			match(RETURN);
27652 			setState(3902);
27653 			_errHandler.sync(this);
27654 			_la = _input.LA(1);
27655 			if (_la==LP_) {
27656 				{
27657 				setState(3901);
27658 				match(LP_);
27659 				}
27660 			}
27661 
27662 			setState(3904);
27663 			select();
27664 			setState(3906);
27665 			_errHandler.sync(this);
27666 			_la = _input.LA(1);
27667 			if (_la==RP_) {
27668 				{
27669 				setState(3905);
27670 				match(RP_);
27671 				}
27672 			}
27673 
27674 			}
27675 		}
27676 		catch (RecognitionException re) {
27677 			_localctx.exception = re;
27678 			_errHandler.reportError(this, re);
27679 			_errHandler.recover(this, re);
27680 		}
27681 		finally {
27682 			exitRule();
27683 		}
27684 		return _localctx;
27685 	}
27686 
27687 	public static class FuncScalarReturnContext extends ParserRuleContext {
27688 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27689 		public DataTypeContext dataType() {
27690 			return getRuleContext(DataTypeContext.class,0);
27691 		}
27692 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
27693 		public CompoundStatementContext compoundStatement() {
27694 			return getRuleContext(CompoundStatementContext.class,0);
27695 		}
27696 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
27697 		public ExprContext expr() {
27698 			return getRuleContext(ExprContext.class,0);
27699 		}
27700 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27701 		public List<FunctionOptionContext> functionOption() {
27702 			return getRuleContexts(FunctionOptionContext.class);
27703 		}
27704 		public FunctionOptionContext functionOption(int i) {
27705 			return getRuleContext(FunctionOptionContext.class,i);
27706 		}
27707 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27708 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27709 		public TerminalNode COMMA_(int i) {
27710 			return getToken(SQLServerStatementParser.COMMA_, i);
27711 		}
27712 		public FuncScalarReturnContext(ParserRuleContext parent, int invokingState) {
27713 			super(parent, invokingState);
27714 		}
27715 		@Override public int getRuleIndex() { return RULE_funcScalarReturn; }
27716 		@Override
27717 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27718 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncScalarReturn(this);
27719 			else return visitor.visitChildren(this);
27720 		}
27721 	}
27722 
27723 	public final FuncScalarReturnContext funcScalarReturn() throws RecognitionException {
27724 		FuncScalarReturnContext _localctx = new FuncScalarReturnContext(_ctx, getState());
27725 		enterRule(_localctx, 568, RULE_funcScalarReturn);
27726 		int _la;
27727 		try {
27728 			enterOuterAlt(_localctx, 1);
27729 			{
27730 			setState(3908);
27731 			match(RETURNS);
27732 			setState(3909);
27733 			dataType();
27734 			setState(3919);
27735 			_errHandler.sync(this);
27736 			_la = _input.LA(1);
27737 			if (_la==WITH) {
27738 				{
27739 				setState(3910);
27740 				match(WITH);
27741 				setState(3911);
27742 				functionOption();
27743 				setState(3916);
27744 				_errHandler.sync(this);
27745 				_la = _input.LA(1);
27746 				while (_la==COMMA_) {
27747 					{
27748 					{
27749 					setState(3912);
27750 					match(COMMA_);
27751 					setState(3913);
27752 					functionOption();
27753 					}
27754 					}
27755 					setState(3918);
27756 					_errHandler.sync(this);
27757 					_la = _input.LA(1);
27758 				}
27759 				}
27760 			}
27761 
27762 			setState(3922);
27763 			_errHandler.sync(this);
27764 			_la = _input.LA(1);
27765 			if (_la==AS) {
27766 				{
27767 				setState(3921);
27768 				match(AS);
27769 				}
27770 			}
27771 
27772 			setState(3924);
27773 			match(BEGIN);
27774 			setState(3925);
27775 			compoundStatement();
27776 			setState(3926);
27777 			match(RETURN);
27778 			setState(3927);
27779 			expr(0);
27780 			}
27781 		}
27782 		catch (RecognitionException re) {
27783 			_localctx.exception = re;
27784 			_errHandler.reportError(this, re);
27785 			_errHandler.recover(this, re);
27786 		}
27787 		finally {
27788 			exitRule();
27789 		}
27790 		return _localctx;
27791 	}
27792 
27793 	public static class TableTypeDefinitionContext extends ParserRuleContext {
27794 		public ColumnDefinitionContext columnDefinition() {
27795 			return getRuleContext(ColumnDefinitionContext.class,0);
27796 		}
27797 		public ColumnConstraintContext columnConstraint() {
27798 			return getRuleContext(ColumnConstraintContext.class,0);
27799 		}
27800 		public ComputedColumnDefinitionContext computedColumnDefinition() {
27801 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
27802 		}
27803 		public List<TableConstraintContext> tableConstraint() {
27804 			return getRuleContexts(TableConstraintContext.class);
27805 		}
27806 		public TableConstraintContext tableConstraint(int i) {
27807 			return getRuleContext(TableConstraintContext.class,i);
27808 		}
27809 		public TableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
27810 			super(parent, invokingState);
27811 		}
27812 		@Override public int getRuleIndex() { return RULE_tableTypeDefinition; }
27813 		@Override
27814 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27815 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableTypeDefinition(this);
27816 			else return visitor.visitChildren(this);
27817 		}
27818 	}
27819 
27820 	public final TableTypeDefinitionContext tableTypeDefinition() throws RecognitionException {
27821 		TableTypeDefinitionContext _localctx = new TableTypeDefinitionContext(_ctx, getState());
27822 		enterRule(_localctx, 570, RULE_tableTypeDefinition);
27823 		int _la;
27824 		try {
27825 			enterOuterAlt(_localctx, 1);
27826 			{
27827 			setState(3933);
27828 			_errHandler.sync(this);
27829 			switch ( getInterpreter().adaptivePredict(_input,400,_ctx) ) {
27830 			case 1:
27831 				{
27832 				setState(3929);
27833 				columnDefinition();
27834 				setState(3930);
27835 				columnConstraint();
27836 				}
27837 				break;
27838 			case 2:
27839 				{
27840 				setState(3932);
27841 				computedColumnDefinition();
27842 				}
27843 				break;
27844 			}
27845 			setState(3938);
27846 			_errHandler.sync(this);
27847 			_la = _input.LA(1);
27848 			while (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (CONSTRAINT - 31)) | (1L << (PRIMARY - 31)) | (1L << (UNIQUE - 31)) | (1L << (FOREIGN - 31)) | (1L << (KEY - 31)))) != 0) || _la==CHECK) {
27849 				{
27850 				{
27851 				setState(3935);
27852 				tableConstraint();
27853 				}
27854 				}
27855 				setState(3940);
27856 				_errHandler.sync(this);
27857 				_la = _input.LA(1);
27858 			}
27859 			}
27860 		}
27861 		catch (RecognitionException re) {
27862 			_localctx.exception = re;
27863 			_errHandler.reportError(this, re);
27864 			_errHandler.recover(this, re);
27865 		}
27866 		finally {
27867 			exitRule();
27868 		}
27869 		return _localctx;
27870 	}
27871 
27872 	public static class CompoundStatementContext extends ParserRuleContext {
27873 		public List<ValidStatementContext> validStatement() {
27874 			return getRuleContexts(ValidStatementContext.class);
27875 		}
27876 		public ValidStatementContext validStatement(int i) {
27877 			return getRuleContext(ValidStatementContext.class,i);
27878 		}
27879 		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
27880 			super(parent, invokingState);
27881 		}
27882 		@Override public int getRuleIndex() { return RULE_compoundStatement; }
27883 		@Override
27884 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27885 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundStatement(this);
27886 			else return visitor.visitChildren(this);
27887 		}
27888 	}
27889 
27890 	public final CompoundStatementContext compoundStatement() throws RecognitionException {
27891 		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
27892 		enterRule(_localctx, 572, RULE_compoundStatement);
27893 		int _la;
27894 		try {
27895 			enterOuterAlt(_localctx, 1);
27896 			{
27897 			setState(3944);
27898 			_errHandler.sync(this);
27899 			_la = _input.LA(1);
27900 			while (((((_la - 46)) & ~0x3f) == 0 && ((1L << (_la - 46)) & ((1L << (SELECT - 46)) | (1L << (INSERT - 46)) | (1L << (UPDATE - 46)) | (1L << (DELETE - 46)) | (1L << (CREATE - 46)) | (1L << (ALTER - 46)) | (1L << (DROP - 46)) | (1L << (TRUNCATE - 46)) | (1L << (SET - 46)) | (1L << (WITH - 46)))) != 0) || _la==DECLARE) {
27901 				{
27902 				{
27903 				setState(3941);
27904 				validStatement();
27905 				}
27906 				}
27907 				setState(3946);
27908 				_errHandler.sync(this);
27909 				_la = _input.LA(1);
27910 			}
27911 			}
27912 		}
27913 		catch (RecognitionException re) {
27914 			_localctx.exception = re;
27915 			_errHandler.reportError(this, re);
27916 			_errHandler.recover(this, re);
27917 		}
27918 		finally {
27919 			exitRule();
27920 		}
27921 		return _localctx;
27922 	}
27923 
27924 	public static class FunctionOptionContext extends ParserRuleContext {
27925 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27926 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27927 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27928 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
27929 		public TerminalNode NULL(int i) {
27930 			return getToken(SQLServerStatementParser.NULL, i);
27931 		}
27932 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
27933 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
27934 		public TerminalNode CALLED() { return getToken(SQLServerStatementParser.CALLED, 0); }
27935 		public ExecuteAsClauseContext executeAsClause() {
27936 			return getRuleContext(ExecuteAsClauseContext.class,0);
27937 		}
27938 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
27939 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
27940 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
27941 		public FunctionOptionContext(ParserRuleContext parent, int invokingState) {
27942 			super(parent, invokingState);
27943 		}
27944 		@Override public int getRuleIndex() { return RULE_functionOption; }
27945 		@Override
27946 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27947 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionOption(this);
27948 			else return visitor.visitChildren(this);
27949 		}
27950 	}
27951 
27952 	public final FunctionOptionContext functionOption() throws RecognitionException {
27953 		FunctionOptionContext _localctx = new FunctionOptionContext(_ctx, getState());
27954 		enterRule(_localctx, 574, RULE_functionOption);
27955 		int _la;
27956 		try {
27957 			setState(3972);
27958 			_errHandler.sync(this);
27959 			switch ( getInterpreter().adaptivePredict(_input,408,_ctx) ) {
27960 			case 1:
27961 				enterOuterAlt(_localctx, 1);
27962 				{
27963 				setState(3948);
27964 				_errHandler.sync(this);
27965 				_la = _input.LA(1);
27966 				if (_la==ENCRYPTION) {
27967 					{
27968 					setState(3947);
27969 					match(ENCRYPTION);
27970 					}
27971 				}
27972 
27973 				}
27974 				break;
27975 			case 2:
27976 				enterOuterAlt(_localctx, 2);
27977 				{
27978 				setState(3951);
27979 				_errHandler.sync(this);
27980 				_la = _input.LA(1);
27981 				if (_la==SCHEMABINDING) {
27982 					{
27983 					setState(3950);
27984 					match(SCHEMABINDING);
27985 					}
27986 				}
27987 
27988 				}
27989 				break;
27990 			case 3:
27991 				enterOuterAlt(_localctx, 3);
27992 				{
27993 				setState(3962);
27994 				_errHandler.sync(this);
27995 				switch (_input.LA(1)) {
27996 				case RETURNS:
27997 					{
27998 					setState(3953);
27999 					match(RETURNS);
28000 					setState(3954);
28001 					match(NULL);
28002 					setState(3955);
28003 					match(ON);
28004 					setState(3956);
28005 					match(NULL);
28006 					setState(3957);
28007 					match(INPUT);
28008 					}
28009 					break;
28010 				case CALLED:
28011 					{
28012 					setState(3958);
28013 					match(CALLED);
28014 					setState(3959);
28015 					match(ON);
28016 					setState(3960);
28017 					match(NULL);
28018 					setState(3961);
28019 					match(INPUT);
28020 					}
28021 					break;
28022 				case COMMA_:
28023 				case AS:
28024 				case BEGIN:
28025 				case RETURN:
28026 					break;
28027 				default:
28028 					break;
28029 				}
28030 				}
28031 				break;
28032 			case 4:
28033 				enterOuterAlt(_localctx, 4);
28034 				{
28035 				setState(3965);
28036 				_errHandler.sync(this);
28037 				_la = _input.LA(1);
28038 				if (_la==EXECUTE || _la==EXEC) {
28039 					{
28040 					setState(3964);
28041 					executeAsClause();
28042 					}
28043 				}
28044 
28045 				}
28046 				break;
28047 			case 5:
28048 				enterOuterAlt(_localctx, 5);
28049 				{
28050 				setState(3970);
28051 				_errHandler.sync(this);
28052 				_la = _input.LA(1);
28053 				if (_la==INLINE) {
28054 					{
28055 					setState(3967);
28056 					match(INLINE);
28057 					setState(3968);
28058 					match(EQ_);
28059 					setState(3969);
28060 					_la = _input.LA(1);
28061 					if ( !(_la==ON || _la==OFF) ) {
28062 					_errHandler.recoverInline(this);
28063 					}
28064 					else {
28065 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28066 						_errHandler.reportMatch(this);
28067 						consume();
28068 					}
28069 					}
28070 				}
28071 
28072 				}
28073 				break;
28074 			}
28075 		}
28076 		catch (RecognitionException re) {
28077 			_localctx.exception = re;
28078 			_errHandler.reportError(this, re);
28079 			_errHandler.recover(this, re);
28080 		}
28081 		finally {
28082 			exitRule();
28083 		}
28084 		return _localctx;
28085 	}
28086 
28087 	public static class ValidStatementContext extends ParserRuleContext {
28088 		public CreateTableContext createTable() {
28089 			return getRuleContext(CreateTableContext.class,0);
28090 		}
28091 		public AlterTableContext alterTable() {
28092 			return getRuleContext(AlterTableContext.class,0);
28093 		}
28094 		public DropTableContext dropTable() {
28095 			return getRuleContext(DropTableContext.class,0);
28096 		}
28097 		public TruncateTableContext truncateTable() {
28098 			return getRuleContext(TruncateTableContext.class,0);
28099 		}
28100 		public InsertContext insert() {
28101 			return getRuleContext(InsertContext.class,0);
28102 		}
28103 		public UpdateContext update() {
28104 			return getRuleContext(UpdateContext.class,0);
28105 		}
28106 		public DeleteContext delete() {
28107 			return getRuleContext(DeleteContext.class,0);
28108 		}
28109 		public SelectContext select() {
28110 			return getRuleContext(SelectContext.class,0);
28111 		}
28112 		public SetVariableContext setVariable() {
28113 			return getRuleContext(SetVariableContext.class,0);
28114 		}
28115 		public DeclareVariableContext declareVariable() {
28116 			return getRuleContext(DeclareVariableContext.class,0);
28117 		}
28118 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
28119 		public ValidStatementContext(ParserRuleContext parent, int invokingState) {
28120 			super(parent, invokingState);
28121 		}
28122 		@Override public int getRuleIndex() { return RULE_validStatement; }
28123 		@Override
28124 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28125 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitValidStatement(this);
28126 			else return visitor.visitChildren(this);
28127 		}
28128 	}
28129 
28130 	public final ValidStatementContext validStatement() throws RecognitionException {
28131 		ValidStatementContext _localctx = new ValidStatementContext(_ctx, getState());
28132 		enterRule(_localctx, 576, RULE_validStatement);
28133 		try {
28134 			enterOuterAlt(_localctx, 1);
28135 			{
28136 			setState(3984);
28137 			_errHandler.sync(this);
28138 			switch ( getInterpreter().adaptivePredict(_input,409,_ctx) ) {
28139 			case 1:
28140 				{
28141 				setState(3974);
28142 				createTable();
28143 				}
28144 				break;
28145 			case 2:
28146 				{
28147 				setState(3975);
28148 				alterTable();
28149 				}
28150 				break;
28151 			case 3:
28152 				{
28153 				setState(3976);
28154 				dropTable();
28155 				}
28156 				break;
28157 			case 4:
28158 				{
28159 				setState(3977);
28160 				truncateTable();
28161 				}
28162 				break;
28163 			case 5:
28164 				{
28165 				setState(3978);
28166 				insert();
28167 				}
28168 				break;
28169 			case 6:
28170 				{
28171 				setState(3979);
28172 				update();
28173 				}
28174 				break;
28175 			case 7:
28176 				{
28177 				setState(3980);
28178 				delete();
28179 				}
28180 				break;
28181 			case 8:
28182 				{
28183 				setState(3981);
28184 				select();
28185 				}
28186 				break;
28187 			case 9:
28188 				{
28189 				setState(3982);
28190 				setVariable();
28191 				}
28192 				break;
28193 			case 10:
28194 				{
28195 				setState(3983);
28196 				declareVariable();
28197 				}
28198 				break;
28199 			}
28200 			setState(3987);
28201 			_errHandler.sync(this);
28202 			switch ( getInterpreter().adaptivePredict(_input,410,_ctx) ) {
28203 			case 1:
28204 				{
28205 				setState(3986);
28206 				match(SEMI_);
28207 				}
28208 				break;
28209 			}
28210 			}
28211 		}
28212 		catch (RecognitionException re) {
28213 			_localctx.exception = re;
28214 			_errHandler.reportError(this, re);
28215 			_errHandler.recover(this, re);
28216 		}
28217 		finally {
28218 			exitRule();
28219 		}
28220 		return _localctx;
28221 	}
28222 
28223 	public static class ProcParametersContext extends ParserRuleContext {
28224 		public List<ProcParameterContext> procParameter() {
28225 			return getRuleContexts(ProcParameterContext.class);
28226 		}
28227 		public ProcParameterContext procParameter(int i) {
28228 			return getRuleContext(ProcParameterContext.class,i);
28229 		}
28230 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28231 		public TerminalNode COMMA_(int i) {
28232 			return getToken(SQLServerStatementParser.COMMA_, i);
28233 		}
28234 		public ProcParametersContext(ParserRuleContext parent, int invokingState) {
28235 			super(parent, invokingState);
28236 		}
28237 		@Override public int getRuleIndex() { return RULE_procParameters; }
28238 		@Override
28239 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28240 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameters(this);
28241 			else return visitor.visitChildren(this);
28242 		}
28243 	}
28244 
28245 	public final ProcParametersContext procParameters() throws RecognitionException {
28246 		ProcParametersContext _localctx = new ProcParametersContext(_ctx, getState());
28247 		enterRule(_localctx, 578, RULE_procParameters);
28248 		int _la;
28249 		try {
28250 			enterOuterAlt(_localctx, 1);
28251 			{
28252 			setState(3997);
28253 			_errHandler.sync(this);
28254 			_la = _input.LA(1);
28255 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
28256 				{
28257 				setState(3989);
28258 				procParameter();
28259 				setState(3994);
28260 				_errHandler.sync(this);
28261 				_la = _input.LA(1);
28262 				while (_la==COMMA_) {
28263 					{
28264 					{
28265 					setState(3990);
28266 					match(COMMA_);
28267 					setState(3991);
28268 					procParameter();
28269 					}
28270 					}
28271 					setState(3996);
28272 					_errHandler.sync(this);
28273 					_la = _input.LA(1);
28274 				}
28275 				}
28276 			}
28277 
28278 			}
28279 		}
28280 		catch (RecognitionException re) {
28281 			_localctx.exception = re;
28282 			_errHandler.reportError(this, re);
28283 			_errHandler.recover(this, re);
28284 		}
28285 		finally {
28286 			exitRule();
28287 		}
28288 		return _localctx;
28289 	}
28290 
28291 	public static class ProcParameterContext extends ParserRuleContext {
28292 		public VariableContext variable() {
28293 			return getRuleContext(VariableContext.class,0);
28294 		}
28295 		public TerminalNode VARYING() { return getToken(SQLServerStatementParser.VARYING, 0); }
28296 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28297 		public LiteralsContext literals() {
28298 			return getRuleContext(LiteralsContext.class,0);
28299 		}
28300 		public TerminalNode OUT() { return getToken(SQLServerStatementParser.OUT, 0); }
28301 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
28302 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
28303 		public ProcParameterContext(ParserRuleContext parent, int invokingState) {
28304 			super(parent, invokingState);
28305 		}
28306 		@Override public int getRuleIndex() { return RULE_procParameter; }
28307 		@Override
28308 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28309 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameter(this);
28310 			else return visitor.visitChildren(this);
28311 		}
28312 	}
28313 
28314 	public final ProcParameterContext procParameter() throws RecognitionException {
28315 		ProcParameterContext _localctx = new ProcParameterContext(_ctx, getState());
28316 		enterRule(_localctx, 580, RULE_procParameter);
28317 		int _la;
28318 		try {
28319 			enterOuterAlt(_localctx, 1);
28320 			{
28321 			setState(3999);
28322 			variable();
28323 			setState(4001);
28324 			_errHandler.sync(this);
28325 			_la = _input.LA(1);
28326 			if (_la==VARYING) {
28327 				{
28328 				setState(4000);
28329 				match(VARYING);
28330 				}
28331 			}
28332 
28333 			setState(4005);
28334 			_errHandler.sync(this);
28335 			_la = _input.LA(1);
28336 			if (_la==EQ_) {
28337 				{
28338 				setState(4003);
28339 				match(EQ_);
28340 				setState(4004);
28341 				literals();
28342 				}
28343 			}
28344 
28345 			setState(4008);
28346 			_errHandler.sync(this);
28347 			_la = _input.LA(1);
28348 			if (_la==READONLY || _la==OUTPUT || _la==OUT) {
28349 				{
28350 				setState(4007);
28351 				_la = _input.LA(1);
28352 				if ( !(_la==READONLY || _la==OUTPUT || _la==OUT) ) {
28353 				_errHandler.recoverInline(this);
28354 				}
28355 				else {
28356 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28357 					_errHandler.reportMatch(this);
28358 					consume();
28359 				}
28360 				}
28361 			}
28362 
28363 			}
28364 		}
28365 		catch (RecognitionException re) {
28366 			_localctx.exception = re;
28367 			_errHandler.reportError(this, re);
28368 			_errHandler.recover(this, re);
28369 		}
28370 		finally {
28371 			exitRule();
28372 		}
28373 		return _localctx;
28374 	}
28375 
28376 	public static class CreateOrAlterProcClauseContext extends ParserRuleContext {
28377 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28378 		public ProcAsClauseContext procAsClause() {
28379 			return getRuleContext(ProcAsClauseContext.class,0);
28380 		}
28381 		public WithCreateProcOptionContext withCreateProcOption() {
28382 			return getRuleContext(WithCreateProcOptionContext.class,0);
28383 		}
28384 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
28385 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
28386 		public CreateOrAlterProcClauseContext(ParserRuleContext parent, int invokingState) {
28387 			super(parent, invokingState);
28388 		}
28389 		@Override public int getRuleIndex() { return RULE_createOrAlterProcClause; }
28390 		@Override
28391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterProcClause(this);
28393 			else return visitor.visitChildren(this);
28394 		}
28395 	}
28396 
28397 	public final CreateOrAlterProcClauseContext createOrAlterProcClause() throws RecognitionException {
28398 		CreateOrAlterProcClauseContext _localctx = new CreateOrAlterProcClauseContext(_ctx, getState());
28399 		enterRule(_localctx, 582, RULE_createOrAlterProcClause);
28400 		int _la;
28401 		try {
28402 			enterOuterAlt(_localctx, 1);
28403 			{
28404 			setState(4011);
28405 			_errHandler.sync(this);
28406 			_la = _input.LA(1);
28407 			if (_la==WITH) {
28408 				{
28409 				setState(4010);
28410 				withCreateProcOption();
28411 				}
28412 			}
28413 
28414 			setState(4015);
28415 			_errHandler.sync(this);
28416 			_la = _input.LA(1);
28417 			if (_la==FOR) {
28418 				{
28419 				setState(4013);
28420 				match(FOR);
28421 				setState(4014);
28422 				match(REPLICATION);
28423 				}
28424 			}
28425 
28426 			setState(4017);
28427 			match(AS);
28428 			setState(4018);
28429 			procAsClause();
28430 			}
28431 		}
28432 		catch (RecognitionException re) {
28433 			_localctx.exception = re;
28434 			_errHandler.reportError(this, re);
28435 			_errHandler.recover(this, re);
28436 		}
28437 		finally {
28438 			exitRule();
28439 		}
28440 		return _localctx;
28441 	}
28442 
28443 	public static class WithCreateProcOptionContext extends ParserRuleContext {
28444 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28445 		public List<ProcOptionContext> procOption() {
28446 			return getRuleContexts(ProcOptionContext.class);
28447 		}
28448 		public ProcOptionContext procOption(int i) {
28449 			return getRuleContext(ProcOptionContext.class,i);
28450 		}
28451 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28452 		public TerminalNode COMMA_(int i) {
28453 			return getToken(SQLServerStatementParser.COMMA_, i);
28454 		}
28455 		public WithCreateProcOptionContext(ParserRuleContext parent, int invokingState) {
28456 			super(parent, invokingState);
28457 		}
28458 		@Override public int getRuleIndex() { return RULE_withCreateProcOption; }
28459 		@Override
28460 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28461 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCreateProcOption(this);
28462 			else return visitor.visitChildren(this);
28463 		}
28464 	}
28465 
28466 	public final WithCreateProcOptionContext withCreateProcOption() throws RecognitionException {
28467 		WithCreateProcOptionContext _localctx = new WithCreateProcOptionContext(_ctx, getState());
28468 		enterRule(_localctx, 584, RULE_withCreateProcOption);
28469 		int _la;
28470 		try {
28471 			enterOuterAlt(_localctx, 1);
28472 			{
28473 			setState(4020);
28474 			match(WITH);
28475 			setState(4029);
28476 			_errHandler.sync(this);
28477 			_la = _input.LA(1);
28478 			if (((((_la - 325)) & ~0x3f) == 0 && ((1L << (_la - 325)) & ((1L << (EXECUTE - 325)) | (1L << (EXEC - 325)) | (1L << (ENCRYPTION - 325)))) != 0) || ((((_la - 496)) & ~0x3f) == 0 && ((1L << (_la - 496)) & ((1L << (RECOMPILE - 496)) | (1L << (SCHEMABINDING - 496)) | (1L << (NATIVE_COMPILATION - 496)))) != 0)) {
28479 				{
28480 				setState(4021);
28481 				procOption();
28482 				setState(4026);
28483 				_errHandler.sync(this);
28484 				_la = _input.LA(1);
28485 				while (_la==COMMA_) {
28486 					{
28487 					{
28488 					setState(4022);
28489 					match(COMMA_);
28490 					setState(4023);
28491 					procOption();
28492 					}
28493 					}
28494 					setState(4028);
28495 					_errHandler.sync(this);
28496 					_la = _input.LA(1);
28497 				}
28498 				}
28499 			}
28500 
28501 			}
28502 		}
28503 		catch (RecognitionException re) {
28504 			_localctx.exception = re;
28505 			_errHandler.reportError(this, re);
28506 			_errHandler.recover(this, re);
28507 		}
28508 		finally {
28509 			exitRule();
28510 		}
28511 		return _localctx;
28512 	}
28513 
28514 	public static class ProcOptionContext extends ParserRuleContext {
28515 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
28516 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
28517 		public ExecuteAsClauseContext executeAsClause() {
28518 			return getRuleContext(ExecuteAsClauseContext.class,0);
28519 		}
28520 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
28521 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
28522 		public ProcOptionContext(ParserRuleContext parent, int invokingState) {
28523 			super(parent, invokingState);
28524 		}
28525 		@Override public int getRuleIndex() { return RULE_procOption; }
28526 		@Override
28527 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28528 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcOption(this);
28529 			else return visitor.visitChildren(this);
28530 		}
28531 	}
28532 
28533 	public final ProcOptionContext procOption() throws RecognitionException {
28534 		ProcOptionContext _localctx = new ProcOptionContext(_ctx, getState());
28535 		enterRule(_localctx, 586, RULE_procOption);
28536 		try {
28537 			setState(4036);
28538 			_errHandler.sync(this);
28539 			switch (_input.LA(1)) {
28540 			case ENCRYPTION:
28541 				enterOuterAlt(_localctx, 1);
28542 				{
28543 				setState(4031);
28544 				match(ENCRYPTION);
28545 				}
28546 				break;
28547 			case RECOMPILE:
28548 				enterOuterAlt(_localctx, 2);
28549 				{
28550 				setState(4032);
28551 				match(RECOMPILE);
28552 				}
28553 				break;
28554 			case EXECUTE:
28555 			case EXEC:
28556 				enterOuterAlt(_localctx, 3);
28557 				{
28558 				setState(4033);
28559 				executeAsClause();
28560 				}
28561 				break;
28562 			case NATIVE_COMPILATION:
28563 				enterOuterAlt(_localctx, 4);
28564 				{
28565 				setState(4034);
28566 				match(NATIVE_COMPILATION);
28567 				}
28568 				break;
28569 			case SCHEMABINDING:
28570 				enterOuterAlt(_localctx, 5);
28571 				{
28572 				setState(4035);
28573 				match(SCHEMABINDING);
28574 				}
28575 				break;
28576 			default:
28577 				throw new NoViableAltException(this);
28578 			}
28579 		}
28580 		catch (RecognitionException re) {
28581 			_localctx.exception = re;
28582 			_errHandler.reportError(this, re);
28583 			_errHandler.recover(this, re);
28584 		}
28585 		finally {
28586 			exitRule();
28587 		}
28588 		return _localctx;
28589 	}
28590 
28591 	public static class ProcAsClauseContext extends ParserRuleContext {
28592 		public CompoundStatementContext compoundStatement() {
28593 			return getRuleContext(CompoundStatementContext.class,0);
28594 		}
28595 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
28596 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
28597 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
28598 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
28599 		public NameContext name() {
28600 			return getRuleContext(NameContext.class,0);
28601 		}
28602 		public List<OwnerContext> owner() {
28603 			return getRuleContexts(OwnerContext.class);
28604 		}
28605 		public OwnerContext owner(int i) {
28606 			return getRuleContext(OwnerContext.class,i);
28607 		}
28608 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
28609 		public TerminalNode DOT_(int i) {
28610 			return getToken(SQLServerStatementParser.DOT_, i);
28611 		}
28612 		public TerminalNode ATOMIC() { return getToken(SQLServerStatementParser.ATOMIC, 0); }
28613 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28614 		public List<ProcSetOptionContext> procSetOption() {
28615 			return getRuleContexts(ProcSetOptionContext.class);
28616 		}
28617 		public ProcSetOptionContext procSetOption(int i) {
28618 			return getRuleContext(ProcSetOptionContext.class,i);
28619 		}
28620 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28621 		public TerminalNode COMMA_(int i) {
28622 			return getToken(SQLServerStatementParser.COMMA_, i);
28623 		}
28624 		public ProcAsClauseContext(ParserRuleContext parent, int invokingState) {
28625 			super(parent, invokingState);
28626 		}
28627 		@Override public int getRuleIndex() { return RULE_procAsClause; }
28628 		@Override
28629 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28630 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcAsClause(this);
28631 			else return visitor.visitChildren(this);
28632 		}
28633 	}
28634 
28635 	public final ProcAsClauseContext procAsClause() throws RecognitionException {
28636 		ProcAsClauseContext _localctx = new ProcAsClauseContext(_ctx, getState());
28637 		enterRule(_localctx, 588, RULE_procAsClause);
28638 		int _la;
28639 		try {
28640 			setState(4073);
28641 			_errHandler.sync(this);
28642 			switch ( getInterpreter().adaptivePredict(_input,427,_ctx) ) {
28643 			case 1:
28644 				enterOuterAlt(_localctx, 1);
28645 				{
28646 				setState(4039);
28647 				_errHandler.sync(this);
28648 				_la = _input.LA(1);
28649 				if (_la==BEGIN) {
28650 					{
28651 					setState(4038);
28652 					match(BEGIN);
28653 					}
28654 				}
28655 
28656 				setState(4041);
28657 				compoundStatement();
28658 				setState(4043);
28659 				_errHandler.sync(this);
28660 				_la = _input.LA(1);
28661 				if (_la==END) {
28662 					{
28663 					setState(4042);
28664 					match(END);
28665 					}
28666 				}
28667 
28668 				}
28669 				break;
28670 			case 2:
28671 				enterOuterAlt(_localctx, 2);
28672 				{
28673 				setState(4045);
28674 				match(EXTERNAL);
28675 				setState(4046);
28676 				match(NAME);
28677 				setState(4050);
28678 				_errHandler.sync(this);
28679 				switch ( getInterpreter().adaptivePredict(_input,423,_ctx) ) {
28680 				case 1:
28681 					{
28682 					setState(4047);
28683 					owner();
28684 					setState(4048);
28685 					match(DOT_);
28686 					}
28687 					break;
28688 				}
28689 				setState(4055);
28690 				_errHandler.sync(this);
28691 				switch ( getInterpreter().adaptivePredict(_input,424,_ctx) ) {
28692 				case 1:
28693 					{
28694 					setState(4052);
28695 					owner();
28696 					setState(4053);
28697 					match(DOT_);
28698 					}
28699 					break;
28700 				}
28701 				setState(4057);
28702 				name();
28703 				}
28704 				break;
28705 			case 3:
28706 				enterOuterAlt(_localctx, 3);
28707 				{
28708 				setState(4058);
28709 				match(BEGIN);
28710 				setState(4059);
28711 				match(ATOMIC);
28712 				setState(4060);
28713 				match(WITH);
28714 				setState(4061);
28715 				procSetOption();
28716 				setState(4066);
28717 				_errHandler.sync(this);
28718 				_la = _input.LA(1);
28719 				while (_la==COMMA_) {
28720 					{
28721 					{
28722 					setState(4062);
28723 					match(COMMA_);
28724 					setState(4063);
28725 					procSetOption();
28726 					}
28727 					}
28728 					setState(4068);
28729 					_errHandler.sync(this);
28730 					_la = _input.LA(1);
28731 				}
28732 				setState(4069);
28733 				compoundStatement();
28734 				setState(4071);
28735 				_errHandler.sync(this);
28736 				_la = _input.LA(1);
28737 				if (_la==END) {
28738 					{
28739 					setState(4070);
28740 					match(END);
28741 					}
28742 				}
28743 
28744 				}
28745 				break;
28746 			}
28747 		}
28748 		catch (RecognitionException re) {
28749 			_localctx.exception = re;
28750 			_errHandler.reportError(this, re);
28751 			_errHandler.recover(this, re);
28752 		}
28753 		finally {
28754 			exitRule();
28755 		}
28756 		return _localctx;
28757 	}
28758 
28759 	public static class ProcSetOptionContext extends ParserRuleContext {
28760 		public TerminalNode LANGUAGE() { return getToken(SQLServerStatementParser.LANGUAGE, 0); }
28761 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28762 		public StringLiteralsContext stringLiterals() {
28763 			return getRuleContext(StringLiteralsContext.class,0);
28764 		}
28765 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
28766 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
28767 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
28768 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
28769 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
28770 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
28771 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
28772 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
28773 		public NumberLiteralsContext numberLiterals() {
28774 			return getRuleContext(NumberLiteralsContext.class,0);
28775 		}
28776 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
28777 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
28778 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
28779 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
28780 		public ProcSetOptionContext(ParserRuleContext parent, int invokingState) {
28781 			super(parent, invokingState);
28782 		}
28783 		@Override public int getRuleIndex() { return RULE_procSetOption; }
28784 		@Override
28785 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28786 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcSetOption(this);
28787 			else return visitor.visitChildren(this);
28788 		}
28789 	}
28790 
28791 	public final ProcSetOptionContext procSetOption() throws RecognitionException {
28792 		ProcSetOptionContext _localctx = new ProcSetOptionContext(_ctx, getState());
28793 		enterRule(_localctx, 590, RULE_procSetOption);
28794 		int _la;
28795 		try {
28796 			setState(4097);
28797 			_errHandler.sync(this);
28798 			switch (_input.LA(1)) {
28799 			case LANGUAGE:
28800 				enterOuterAlt(_localctx, 1);
28801 				{
28802 				setState(4075);
28803 				match(LANGUAGE);
28804 				setState(4076);
28805 				match(EQ_);
28806 				setState(4077);
28807 				stringLiterals();
28808 				}
28809 				break;
28810 			case TRANSACTION:
28811 				enterOuterAlt(_localctx, 2);
28812 				{
28813 				setState(4078);
28814 				match(TRANSACTION);
28815 				setState(4079);
28816 				match(ISOLATION);
28817 				setState(4080);
28818 				match(LEVEL);
28819 				setState(4081);
28820 				match(EQ_);
28821 				setState(4086);
28822 				_errHandler.sync(this);
28823 				switch (_input.LA(1)) {
28824 				case SNAPSHOT:
28825 					{
28826 					setState(4082);
28827 					match(SNAPSHOT);
28828 					}
28829 					break;
28830 				case REPEATABLE:
28831 					{
28832 					setState(4083);
28833 					match(REPEATABLE);
28834 					setState(4084);
28835 					match(READ);
28836 					}
28837 					break;
28838 				case SERIALIZABLE:
28839 					{
28840 					setState(4085);
28841 					match(SERIALIZABLE);
28842 					}
28843 					break;
28844 				default:
28845 					throw new NoViableAltException(this);
28846 				}
28847 				}
28848 				break;
28849 			case DATEFIRST:
28850 				enterOuterAlt(_localctx, 3);
28851 				{
28852 				setState(4088);
28853 				match(DATEFIRST);
28854 				setState(4089);
28855 				match(EQ_);
28856 				setState(4090);
28857 				numberLiterals();
28858 				}
28859 				break;
28860 			case DATEFORMAT:
28861 				enterOuterAlt(_localctx, 4);
28862 				{
28863 				setState(4091);
28864 				match(DATEFORMAT);
28865 				setState(4092);
28866 				match(EQ_);
28867 				setState(4093);
28868 				stringLiterals();
28869 				}
28870 				break;
28871 			case DELAYED_DURABILITY:
28872 				enterOuterAlt(_localctx, 5);
28873 				{
28874 				setState(4094);
28875 				match(DELAYED_DURABILITY);
28876 				setState(4095);
28877 				match(EQ_);
28878 				setState(4096);
28879 				_la = _input.LA(1);
28880 				if ( !(_la==ON || _la==OFF) ) {
28881 				_errHandler.recoverInline(this);
28882 				}
28883 				else {
28884 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28885 					_errHandler.reportMatch(this);
28886 					consume();
28887 				}
28888 				}
28889 				break;
28890 			default:
28891 				throw new NoViableAltException(this);
28892 			}
28893 		}
28894 		catch (RecognitionException re) {
28895 			_localctx.exception = re;
28896 			_errHandler.reportError(this, re);
28897 			_errHandler.recover(this, re);
28898 		}
28899 		finally {
28900 			exitRule();
28901 		}
28902 		return _localctx;
28903 	}
28904 
28905 	public static class CreateOrAlterViewClauseContext extends ParserRuleContext {
28906 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28907 		public SelectContext select() {
28908 			return getRuleContext(SelectContext.class,0);
28909 		}
28910 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
28911 		public TerminalNode WITH(int i) {
28912 			return getToken(SQLServerStatementParser.WITH, i);
28913 		}
28914 		public List<ViewAttributeContext> viewAttribute() {
28915 			return getRuleContexts(ViewAttributeContext.class);
28916 		}
28917 		public ViewAttributeContext viewAttribute(int i) {
28918 			return getRuleContext(ViewAttributeContext.class,i);
28919 		}
28920 		public WithCommonTableExprContext withCommonTableExpr() {
28921 			return getRuleContext(WithCommonTableExprContext.class,0);
28922 		}
28923 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
28924 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
28925 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28926 		public TerminalNode COMMA_(int i) {
28927 			return getToken(SQLServerStatementParser.COMMA_, i);
28928 		}
28929 		public CreateOrAlterViewClauseContext(ParserRuleContext parent, int invokingState) {
28930 			super(parent, invokingState);
28931 		}
28932 		@Override public int getRuleIndex() { return RULE_createOrAlterViewClause; }
28933 		@Override
28934 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28935 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterViewClause(this);
28936 			else return visitor.visitChildren(this);
28937 		}
28938 	}
28939 
28940 	public final CreateOrAlterViewClauseContext createOrAlterViewClause() throws RecognitionException {
28941 		CreateOrAlterViewClauseContext _localctx = new CreateOrAlterViewClauseContext(_ctx, getState());
28942 		enterRule(_localctx, 592, RULE_createOrAlterViewClause);
28943 		int _la;
28944 		try {
28945 			enterOuterAlt(_localctx, 1);
28946 			{
28947 			setState(4108);
28948 			_errHandler.sync(this);
28949 			_la = _input.LA(1);
28950 			if (_la==WITH) {
28951 				{
28952 				setState(4099);
28953 				match(WITH);
28954 				setState(4100);
28955 				viewAttribute();
28956 				setState(4105);
28957 				_errHandler.sync(this);
28958 				_la = _input.LA(1);
28959 				while (_la==COMMA_) {
28960 					{
28961 					{
28962 					setState(4101);
28963 					match(COMMA_);
28964 					setState(4102);
28965 					viewAttribute();
28966 					}
28967 					}
28968 					setState(4107);
28969 					_errHandler.sync(this);
28970 					_la = _input.LA(1);
28971 				}
28972 				}
28973 			}
28974 
28975 			setState(4110);
28976 			match(AS);
28977 			setState(4112);
28978 			_errHandler.sync(this);
28979 			switch ( getInterpreter().adaptivePredict(_input,432,_ctx) ) {
28980 			case 1:
28981 				{
28982 				setState(4111);
28983 				withCommonTableExpr();
28984 				}
28985 				break;
28986 			}
28987 			setState(4114);
28988 			select();
28989 			setState(4118);
28990 			_errHandler.sync(this);
28991 			_la = _input.LA(1);
28992 			if (_la==WITH) {
28993 				{
28994 				setState(4115);
28995 				match(WITH);
28996 				setState(4116);
28997 				match(CHECK);
28998 				setState(4117);
28999 				match(OPTION);
29000 				}
29001 			}
29002 
29003 			}
29004 		}
29005 		catch (RecognitionException re) {
29006 			_localctx.exception = re;
29007 			_errHandler.reportError(this, re);
29008 			_errHandler.recover(this, re);
29009 		}
29010 		finally {
29011 			exitRule();
29012 		}
29013 		return _localctx;
29014 	}
29015 
29016 	public static class ViewAttributeContext extends ParserRuleContext {
29017 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
29018 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
29019 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
29020 		public ViewAttributeContext(ParserRuleContext parent, int invokingState) {
29021 			super(parent, invokingState);
29022 		}
29023 		@Override public int getRuleIndex() { return RULE_viewAttribute; }
29024 		@Override
29025 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29026 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewAttribute(this);
29027 			else return visitor.visitChildren(this);
29028 		}
29029 	}
29030 
29031 	public final ViewAttributeContext viewAttribute() throws RecognitionException {
29032 		ViewAttributeContext _localctx = new ViewAttributeContext(_ctx, getState());
29033 		enterRule(_localctx, 594, RULE_viewAttribute);
29034 		int _la;
29035 		try {
29036 			enterOuterAlt(_localctx, 1);
29037 			{
29038 			setState(4120);
29039 			_la = _input.LA(1);
29040 			if ( !(_la==ENCRYPTION || _la==SCHEMABINDING || _la==VIEW_METADATA) ) {
29041 			_errHandler.recoverInline(this);
29042 			}
29043 			else {
29044 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29045 				_errHandler.reportMatch(this);
29046 				consume();
29047 			}
29048 			}
29049 		}
29050 		catch (RecognitionException re) {
29051 			_localctx.exception = re;
29052 			_errHandler.reportError(this, re);
29053 			_errHandler.recover(this, re);
29054 		}
29055 		finally {
29056 			exitRule();
29057 		}
29058 		return _localctx;
29059 	}
29060 
29061 	public static class WithCommonTableExprContext extends ParserRuleContext {
29062 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29063 		public List<CommonTableExprContext> commonTableExpr() {
29064 			return getRuleContexts(CommonTableExprContext.class);
29065 		}
29066 		public CommonTableExprContext commonTableExpr(int i) {
29067 			return getRuleContext(CommonTableExprContext.class,i);
29068 		}
29069 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29070 		public TerminalNode COMMA_(int i) {
29071 			return getToken(SQLServerStatementParser.COMMA_, i);
29072 		}
29073 		public WithCommonTableExprContext(ParserRuleContext parent, int invokingState) {
29074 			super(parent, invokingState);
29075 		}
29076 		@Override public int getRuleIndex() { return RULE_withCommonTableExpr; }
29077 		@Override
29078 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29079 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCommonTableExpr(this);
29080 			else return visitor.visitChildren(this);
29081 		}
29082 	}
29083 
29084 	public final WithCommonTableExprContext withCommonTableExpr() throws RecognitionException {
29085 		WithCommonTableExprContext _localctx = new WithCommonTableExprContext(_ctx, getState());
29086 		enterRule(_localctx, 596, RULE_withCommonTableExpr);
29087 		int _la;
29088 		try {
29089 			enterOuterAlt(_localctx, 1);
29090 			{
29091 			setState(4122);
29092 			match(WITH);
29093 			setState(4123);
29094 			commonTableExpr();
29095 			setState(4128);
29096 			_errHandler.sync(this);
29097 			_la = _input.LA(1);
29098 			while (_la==COMMA_) {
29099 				{
29100 				{
29101 				setState(4124);
29102 				match(COMMA_);
29103 				setState(4125);
29104 				commonTableExpr();
29105 				}
29106 				}
29107 				setState(4130);
29108 				_errHandler.sync(this);
29109 				_la = _input.LA(1);
29110 			}
29111 			}
29112 		}
29113 		catch (RecognitionException re) {
29114 			_localctx.exception = re;
29115 			_errHandler.reportError(this, re);
29116 			_errHandler.recover(this, re);
29117 		}
29118 		finally {
29119 			exitRule();
29120 		}
29121 		return _localctx;
29122 	}
29123 
29124 	public static class CommonTableExprContext extends ParserRuleContext {
29125 		public NameContext name() {
29126 			return getRuleContext(NameContext.class,0);
29127 		}
29128 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29129 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
29130 		public TerminalNode LP_(int i) {
29131 			return getToken(SQLServerStatementParser.LP_, i);
29132 		}
29133 		public SelectContext select() {
29134 			return getRuleContext(SelectContext.class,0);
29135 		}
29136 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
29137 		public TerminalNode RP_(int i) {
29138 			return getToken(SQLServerStatementParser.RP_, i);
29139 		}
29140 		public List<ColumnNameContext> columnName() {
29141 			return getRuleContexts(ColumnNameContext.class);
29142 		}
29143 		public ColumnNameContext columnName(int i) {
29144 			return getRuleContext(ColumnNameContext.class,i);
29145 		}
29146 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29147 		public TerminalNode COMMA_(int i) {
29148 			return getToken(SQLServerStatementParser.COMMA_, i);
29149 		}
29150 		public CommonTableExprContext(ParserRuleContext parent, int invokingState) {
29151 			super(parent, invokingState);
29152 		}
29153 		@Override public int getRuleIndex() { return RULE_commonTableExpr; }
29154 		@Override
29155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonTableExpr(this);
29157 			else return visitor.visitChildren(this);
29158 		}
29159 	}
29160 
29161 	public final CommonTableExprContext commonTableExpr() throws RecognitionException {
29162 		CommonTableExprContext _localctx = new CommonTableExprContext(_ctx, getState());
29163 		enterRule(_localctx, 598, RULE_commonTableExpr);
29164 		int _la;
29165 		try {
29166 			enterOuterAlt(_localctx, 1);
29167 			{
29168 			setState(4131);
29169 			name();
29170 			setState(4143);
29171 			_errHandler.sync(this);
29172 			_la = _input.LA(1);
29173 			if (_la==LP_) {
29174 				{
29175 				setState(4132);
29176 				match(LP_);
29177 				setState(4133);
29178 				columnName();
29179 				setState(4138);
29180 				_errHandler.sync(this);
29181 				_la = _input.LA(1);
29182 				while (_la==COMMA_) {
29183 					{
29184 					{
29185 					setState(4134);
29186 					match(COMMA_);
29187 					setState(4135);
29188 					columnName();
29189 					}
29190 					}
29191 					setState(4140);
29192 					_errHandler.sync(this);
29193 					_la = _input.LA(1);
29194 				}
29195 				setState(4141);
29196 				match(RP_);
29197 				}
29198 			}
29199 
29200 			setState(4145);
29201 			match(AS);
29202 			setState(4146);
29203 			match(LP_);
29204 			setState(4147);
29205 			select();
29206 			setState(4148);
29207 			match(RP_);
29208 			}
29209 		}
29210 		catch (RecognitionException re) {
29211 			_localctx.exception = re;
29212 			_errHandler.reportError(this, re);
29213 			_errHandler.recover(this, re);
29214 		}
29215 		finally {
29216 			exitRule();
29217 		}
29218 		return _localctx;
29219 	}
29220 
29221 	public static class CreateTriggerClauseContext extends ParserRuleContext {
29222 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29223 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
29224 		public TerminalNode FOR(int i) {
29225 			return getToken(SQLServerStatementParser.FOR, i);
29226 		}
29227 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
29228 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
29229 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
29230 		public CompoundStatementContext compoundStatement() {
29231 			return getRuleContext(CompoundStatementContext.class,0);
29232 		}
29233 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
29234 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
29235 		public MethodSpecifierContext methodSpecifier() {
29236 			return getRuleContext(MethodSpecifierContext.class,0);
29237 		}
29238 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
29239 		public TerminalNode WITH(int i) {
29240 			return getToken(SQLServerStatementParser.WITH, i);
29241 		}
29242 		public List<DmlTriggerOptionContext> dmlTriggerOption() {
29243 			return getRuleContexts(DmlTriggerOptionContext.class);
29244 		}
29245 		public DmlTriggerOptionContext dmlTriggerOption(int i) {
29246 			return getRuleContext(DmlTriggerOptionContext.class,i);
29247 		}
29248 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29249 		public TerminalNode COMMA_(int i) {
29250 			return getToken(SQLServerStatementParser.COMMA_, i);
29251 		}
29252 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
29253 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
29254 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
29255 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
29256 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
29257 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
29258 		public CreateTriggerClauseContext(ParserRuleContext parent, int invokingState) {
29259 			super(parent, invokingState);
29260 		}
29261 		@Override public int getRuleIndex() { return RULE_createTriggerClause; }
29262 		@Override
29263 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29264 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTriggerClause(this);
29265 			else return visitor.visitChildren(this);
29266 		}
29267 	}
29268 
29269 	public final CreateTriggerClauseContext createTriggerClause() throws RecognitionException {
29270 		CreateTriggerClauseContext _localctx = new CreateTriggerClauseContext(_ctx, getState());
29271 		enterRule(_localctx, 600, RULE_createTriggerClause);
29272 		int _la;
29273 		try {
29274 			enterOuterAlt(_localctx, 1);
29275 			{
29276 			setState(4155);
29277 			_errHandler.sync(this);
29278 			_la = _input.LA(1);
29279 			if (_la==WITH) {
29280 				{
29281 				setState(4150);
29282 				match(WITH);
29283 				setState(4151);
29284 				dmlTriggerOption();
29285 				setState(4152);
29286 				match(COMMA_);
29287 				setState(4153);
29288 				dmlTriggerOption();
29289 				}
29290 			}
29291 
29292 			setState(4161);
29293 			_errHandler.sync(this);
29294 			switch (_input.LA(1)) {
29295 			case FOR:
29296 				{
29297 				setState(4157);
29298 				match(FOR);
29299 				}
29300 				break;
29301 			case AFTER:
29302 				{
29303 				setState(4158);
29304 				match(AFTER);
29305 				}
29306 				break;
29307 			case INSTEAD:
29308 				{
29309 				setState(4159);
29310 				match(INSTEAD);
29311 				setState(4160);
29312 				match(OF);
29313 				}
29314 				break;
29315 			default:
29316 				throw new NoViableAltException(this);
29317 			}
29318 			setState(4164);
29319 			_errHandler.sync(this);
29320 			_la = _input.LA(1);
29321 			if (_la==INSERT) {
29322 				{
29323 				setState(4163);
29324 				match(INSERT);
29325 				}
29326 			}
29327 
29328 			setState(4167);
29329 			_errHandler.sync(this);
29330 			switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
29331 			case 1:
29332 				{
29333 				setState(4166);
29334 				match(COMMA_);
29335 				}
29336 				break;
29337 			}
29338 			setState(4170);
29339 			_errHandler.sync(this);
29340 			_la = _input.LA(1);
29341 			if (_la==UPDATE) {
29342 				{
29343 				setState(4169);
29344 				match(UPDATE);
29345 				}
29346 			}
29347 
29348 			setState(4173);
29349 			_errHandler.sync(this);
29350 			switch ( getInterpreter().adaptivePredict(_input,442,_ctx) ) {
29351 			case 1:
29352 				{
29353 				setState(4172);
29354 				match(COMMA_);
29355 				}
29356 				break;
29357 			}
29358 			setState(4176);
29359 			_errHandler.sync(this);
29360 			_la = _input.LA(1);
29361 			if (_la==DELETE) {
29362 				{
29363 				setState(4175);
29364 				match(DELETE);
29365 				}
29366 			}
29367 
29368 			setState(4179);
29369 			_errHandler.sync(this);
29370 			_la = _input.LA(1);
29371 			if (_la==COMMA_) {
29372 				{
29373 				setState(4178);
29374 				match(COMMA_);
29375 				}
29376 			}
29377 
29378 			setState(4183);
29379 			_errHandler.sync(this);
29380 			_la = _input.LA(1);
29381 			if (_la==WITH) {
29382 				{
29383 				setState(4181);
29384 				match(WITH);
29385 				setState(4182);
29386 				match(APPEND);
29387 				}
29388 			}
29389 
29390 			setState(4188);
29391 			_errHandler.sync(this);
29392 			_la = _input.LA(1);
29393 			if (_la==NOT) {
29394 				{
29395 				setState(4185);
29396 				match(NOT);
29397 				setState(4186);
29398 				match(FOR);
29399 				setState(4187);
29400 				match(REPLICATION);
29401 				}
29402 			}
29403 
29404 			setState(4190);
29405 			match(AS);
29406 			setState(4195);
29407 			_errHandler.sync(this);
29408 			switch (_input.LA(1)) {
29409 			case EOF:
29410 			case SEMI_:
29411 			case SELECT:
29412 			case INSERT:
29413 			case UPDATE:
29414 			case DELETE:
29415 			case CREATE:
29416 			case ALTER:
29417 			case DROP:
29418 			case TRUNCATE:
29419 			case SET:
29420 			case WITH:
29421 			case DECLARE:
29422 				{
29423 				setState(4191);
29424 				compoundStatement();
29425 				}
29426 				break;
29427 			case EXTERNAL:
29428 				{
29429 				setState(4192);
29430 				match(EXTERNAL);
29431 				setState(4193);
29432 				match(NAME);
29433 				setState(4194);
29434 				methodSpecifier();
29435 				}
29436 				break;
29437 			default:
29438 				throw new NoViableAltException(this);
29439 			}
29440 			}
29441 		}
29442 		catch (RecognitionException re) {
29443 			_localctx.exception = re;
29444 			_errHandler.reportError(this, re);
29445 			_errHandler.recover(this, re);
29446 		}
29447 		finally {
29448 			exitRule();
29449 		}
29450 		return _localctx;
29451 	}
29452 
29453 	public static class DmlTriggerOptionContext extends ParserRuleContext {
29454 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
29455 		public ExecuteAsClauseContext executeAsClause() {
29456 			return getRuleContext(ExecuteAsClauseContext.class,0);
29457 		}
29458 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
29459 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
29460 		public DmlTriggerOptionContext(ParserRuleContext parent, int invokingState) {
29461 			super(parent, invokingState);
29462 		}
29463 		@Override public int getRuleIndex() { return RULE_dmlTriggerOption; }
29464 		@Override
29465 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29466 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDmlTriggerOption(this);
29467 			else return visitor.visitChildren(this);
29468 		}
29469 	}
29470 
29471 	public final DmlTriggerOptionContext dmlTriggerOption() throws RecognitionException {
29472 		DmlTriggerOptionContext _localctx = new DmlTriggerOptionContext(_ctx, getState());
29473 		enterRule(_localctx, 602, RULE_dmlTriggerOption);
29474 		try {
29475 			setState(4202);
29476 			_errHandler.sync(this);
29477 			switch (_input.LA(1)) {
29478 			case ENCRYPTION:
29479 				enterOuterAlt(_localctx, 1);
29480 				{
29481 				setState(4197);
29482 				match(ENCRYPTION);
29483 				}
29484 				break;
29485 			case EXECUTE:
29486 			case EXEC:
29487 				enterOuterAlt(_localctx, 2);
29488 				{
29489 				setState(4198);
29490 				executeAsClause();
29491 				}
29492 				break;
29493 			case NATIVE_COMPILATION:
29494 				enterOuterAlt(_localctx, 3);
29495 				{
29496 				setState(4199);
29497 				match(NATIVE_COMPILATION);
29498 				}
29499 				break;
29500 			case SCHEMABINDING:
29501 				enterOuterAlt(_localctx, 4);
29502 				{
29503 				setState(4200);
29504 				match(SCHEMABINDING);
29505 				}
29506 				break;
29507 			case COMMA_:
29508 			case FOR:
29509 			case AFTER:
29510 			case INSTEAD:
29511 				enterOuterAlt(_localctx, 5);
29512 				{
29513 				}
29514 				break;
29515 			default:
29516 				throw new NoViableAltException(this);
29517 			}
29518 		}
29519 		catch (RecognitionException re) {
29520 			_localctx.exception = re;
29521 			_errHandler.reportError(this, re);
29522 			_errHandler.recover(this, re);
29523 		}
29524 		finally {
29525 			exitRule();
29526 		}
29527 		return _localctx;
29528 	}
29529 
29530 	public static class MethodSpecifierContext extends ParserRuleContext {
29531 		public List<NameContext> name() {
29532 			return getRuleContexts(NameContext.class);
29533 		}
29534 		public NameContext name(int i) {
29535 			return getRuleContext(NameContext.class,i);
29536 		}
29537 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
29538 		public TerminalNode DOT_(int i) {
29539 			return getToken(SQLServerStatementParser.DOT_, i);
29540 		}
29541 		public MethodSpecifierContext(ParserRuleContext parent, int invokingState) {
29542 			super(parent, invokingState);
29543 		}
29544 		@Override public int getRuleIndex() { return RULE_methodSpecifier; }
29545 		@Override
29546 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29547 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMethodSpecifier(this);
29548 			else return visitor.visitChildren(this);
29549 		}
29550 	}
29551 
29552 	public final MethodSpecifierContext methodSpecifier() throws RecognitionException {
29553 		MethodSpecifierContext _localctx = new MethodSpecifierContext(_ctx, getState());
29554 		enterRule(_localctx, 604, RULE_methodSpecifier);
29555 		try {
29556 			enterOuterAlt(_localctx, 1);
29557 			{
29558 			setState(4204);
29559 			name();
29560 			setState(4205);
29561 			match(DOT_);
29562 			setState(4206);
29563 			name();
29564 			setState(4207);
29565 			match(DOT_);
29566 			setState(4208);
29567 			name();
29568 			}
29569 		}
29570 		catch (RecognitionException re) {
29571 			_localctx.exception = re;
29572 			_errHandler.reportError(this, re);
29573 			_errHandler.recover(this, re);
29574 		}
29575 		finally {
29576 			exitRule();
29577 		}
29578 		return _localctx;
29579 	}
29580 
29581 	public static class TriggerTargetContext extends ParserRuleContext {
29582 		public TableNameContext tableName() {
29583 			return getRuleContext(TableNameContext.class,0);
29584 		}
29585 		public ViewNameContext viewName() {
29586 			return getRuleContext(ViewNameContext.class,0);
29587 		}
29588 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
29589 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
29590 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
29591 		public TriggerTargetContext(ParserRuleContext parent, int invokingState) {
29592 			super(parent, invokingState);
29593 		}
29594 		@Override public int getRuleIndex() { return RULE_triggerTarget; }
29595 		@Override
29596 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29597 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerTarget(this);
29598 			else return visitor.visitChildren(this);
29599 		}
29600 	}
29601 
29602 	public final TriggerTargetContext triggerTarget() throws RecognitionException {
29603 		TriggerTargetContext _localctx = new TriggerTargetContext(_ctx, getState());
29604 		enterRule(_localctx, 606, RULE_triggerTarget);
29605 		try {
29606 			setState(4215);
29607 			_errHandler.sync(this);
29608 			switch ( getInterpreter().adaptivePredict(_input,449,_ctx) ) {
29609 			case 1:
29610 				enterOuterAlt(_localctx, 1);
29611 				{
29612 				setState(4210);
29613 				tableName();
29614 				}
29615 				break;
29616 			case 2:
29617 				enterOuterAlt(_localctx, 2);
29618 				{
29619 				setState(4211);
29620 				viewName();
29621 				}
29622 				break;
29623 			case 3:
29624 				enterOuterAlt(_localctx, 3);
29625 				{
29626 				setState(4212);
29627 				match(ALL);
29628 				setState(4213);
29629 				match(SERVER);
29630 				}
29631 				break;
29632 			case 4:
29633 				enterOuterAlt(_localctx, 4);
29634 				{
29635 				setState(4214);
29636 				match(DATABASE);
29637 				}
29638 				break;
29639 			}
29640 		}
29641 		catch (RecognitionException re) {
29642 			_localctx.exception = re;
29643 			_errHandler.reportError(this, re);
29644 			_errHandler.recover(this, re);
29645 		}
29646 		finally {
29647 			exitRule();
29648 		}
29649 		return _localctx;
29650 	}
29651 
29652 	public static class CreateOrAlterSequenceClauseContext extends ParserRuleContext {
29653 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29654 		public DataTypeContext dataType() {
29655 			return getRuleContext(DataTypeContext.class,0);
29656 		}
29657 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29658 		public ExprContext expr() {
29659 			return getRuleContext(ExprContext.class,0);
29660 		}
29661 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
29662 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
29663 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
29664 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
29665 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
29666 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
29667 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
29668 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
29669 		public TerminalNode CYCLE() { return getToken(SQLServerStatementParser.CYCLE, 0); }
29670 		public CreateOrAlterSequenceClauseContext(ParserRuleContext parent, int invokingState) {
29671 			super(parent, invokingState);
29672 		}
29673 		@Override public int getRuleIndex() { return RULE_createOrAlterSequenceClause; }
29674 		@Override
29675 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29676 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterSequenceClause(this);
29677 			else return visitor.visitChildren(this);
29678 		}
29679 	}
29680 
29681 	public final CreateOrAlterSequenceClauseContext createOrAlterSequenceClause() throws RecognitionException {
29682 		CreateOrAlterSequenceClauseContext _localctx = new CreateOrAlterSequenceClauseContext(_ctx, getState());
29683 		enterRule(_localctx, 608, RULE_createOrAlterSequenceClause);
29684 		int _la;
29685 		try {
29686 			setState(4245);
29687 			_errHandler.sync(this);
29688 			switch ( getInterpreter().adaptivePredict(_input,453,_ctx) ) {
29689 			case 1:
29690 				enterOuterAlt(_localctx, 1);
29691 				{
29692 				setState(4217);
29693 				match(AS);
29694 				setState(4218);
29695 				dataType();
29696 				}
29697 				break;
29698 			case 2:
29699 				enterOuterAlt(_localctx, 2);
29700 				{
29701 				setState(4219);
29702 				_la = _input.LA(1);
29703 				if ( !(_la==START || _la==RESTART) ) {
29704 				_errHandler.recoverInline(this);
29705 				}
29706 				else {
29707 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29708 					_errHandler.reportMatch(this);
29709 					consume();
29710 				}
29711 				setState(4220);
29712 				match(WITH);
29713 				setState(4221);
29714 				expr(0);
29715 				}
29716 				break;
29717 			case 3:
29718 				enterOuterAlt(_localctx, 3);
29719 				{
29720 				setState(4222);
29721 				match(INCREMENT);
29722 				setState(4223);
29723 				match(BY);
29724 				setState(4224);
29725 				expr(0);
29726 				}
29727 				break;
29728 			case 4:
29729 				enterOuterAlt(_localctx, 4);
29730 				{
29731 				setState(4225);
29732 				match(MINVALUE);
29733 				setState(4227);
29734 				_errHandler.sync(this);
29735 				switch ( getInterpreter().adaptivePredict(_input,450,_ctx) ) {
29736 				case 1:
29737 					{
29738 					setState(4226);
29739 					expr(0);
29740 					}
29741 					break;
29742 				}
29743 				}
29744 				break;
29745 			case 5:
29746 				enterOuterAlt(_localctx, 5);
29747 				{
29748 				setState(4229);
29749 				match(NO);
29750 				setState(4230);
29751 				match(MINVALUE);
29752 				}
29753 				break;
29754 			case 6:
29755 				enterOuterAlt(_localctx, 6);
29756 				{
29757 				setState(4231);
29758 				match(MAXVALUE);
29759 				setState(4233);
29760 				_errHandler.sync(this);
29761 				switch ( getInterpreter().adaptivePredict(_input,451,_ctx) ) {
29762 				case 1:
29763 					{
29764 					setState(4232);
29765 					expr(0);
29766 					}
29767 					break;
29768 				}
29769 				}
29770 				break;
29771 			case 7:
29772 				enterOuterAlt(_localctx, 7);
29773 				{
29774 				setState(4235);
29775 				match(NO);
29776 				setState(4236);
29777 				match(MAXVALUE);
29778 				}
29779 				break;
29780 			case 8:
29781 				enterOuterAlt(_localctx, 8);
29782 				{
29783 				setState(4237);
29784 				match(CACHE);
29785 				setState(4238);
29786 				expr(0);
29787 				}
29788 				break;
29789 			case 9:
29790 				enterOuterAlt(_localctx, 9);
29791 				{
29792 				setState(4239);
29793 				match(NO);
29794 				setState(4240);
29795 				match(CACHE);
29796 				}
29797 				break;
29798 			case 10:
29799 				enterOuterAlt(_localctx, 10);
29800 				{
29801 				setState(4242);
29802 				_errHandler.sync(this);
29803 				_la = _input.LA(1);
29804 				if (_la==NO) {
29805 					{
29806 					setState(4241);
29807 					match(NO);
29808 					}
29809 				}
29810 
29811 				setState(4244);
29812 				match(CYCLE);
29813 				}
29814 				break;
29815 			}
29816 		}
29817 		catch (RecognitionException re) {
29818 			_localctx.exception = re;
29819 			_errHandler.reportError(this, re);
29820 			_errHandler.recover(this, re);
29821 		}
29822 		finally {
29823 			exitRule();
29824 		}
29825 		return _localctx;
29826 	}
29827 
29828 	public static class CreateIndexClauseContext extends ParserRuleContext {
29829 		public TerminalNode INCLUDE() { return getToken(SQLServerStatementParser.INCLUDE, 0); }
29830 		public ColumnNamesWithSortContext columnNamesWithSort() {
29831 			return getRuleContext(ColumnNamesWithSortContext.class,0);
29832 		}
29833 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
29834 		public FilterPredicateContext filterPredicate() {
29835 			return getRuleContext(FilterPredicateContext.class,0);
29836 		}
29837 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29838 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
29839 		public TerminalNode LP_(int i) {
29840 			return getToken(SQLServerStatementParser.LP_, i);
29841 		}
29842 		public List<RelationalIndexOptionContext> relationalIndexOption() {
29843 			return getRuleContexts(RelationalIndexOptionContext.class);
29844 		}
29845 		public RelationalIndexOptionContext relationalIndexOption(int i) {
29846 			return getRuleContext(RelationalIndexOptionContext.class,i);
29847 		}
29848 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
29849 		public TerminalNode RP_(int i) {
29850 			return getToken(SQLServerStatementParser.RP_, i);
29851 		}
29852 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29853 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
29854 		public SchemaNameContext schemaName() {
29855 			return getRuleContext(SchemaNameContext.class,0);
29856 		}
29857 		public ColumnNameContext columnName() {
29858 			return getRuleContext(ColumnNameContext.class,0);
29859 		}
29860 		public List<NameContext> name() {
29861 			return getRuleContexts(NameContext.class);
29862 		}
29863 		public NameContext name(int i) {
29864 			return getRuleContext(NameContext.class,i);
29865 		}
29866 		public StringLiteralsContext stringLiterals() {
29867 			return getRuleContext(StringLiteralsContext.class,0);
29868 		}
29869 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29870 		public TerminalNode COMMA_(int i) {
29871 			return getToken(SQLServerStatementParser.COMMA_, i);
29872 		}
29873 		public CreateIndexClauseContext(ParserRuleContext parent, int invokingState) {
29874 			super(parent, invokingState);
29875 		}
29876 		@Override public int getRuleIndex() { return RULE_createIndexClause; }
29877 		@Override
29878 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29879 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexClause(this);
29880 			else return visitor.visitChildren(this);
29881 		}
29882 	}
29883 
29884 	public final CreateIndexClauseContext createIndexClause() throws RecognitionException {
29885 		CreateIndexClauseContext _localctx = new CreateIndexClauseContext(_ctx, getState());
29886 		enterRule(_localctx, 610, RULE_createIndexClause);
29887 		int _la;
29888 		try {
29889 			enterOuterAlt(_localctx, 1);
29890 			{
29891 			setState(4249);
29892 			_errHandler.sync(this);
29893 			_la = _input.LA(1);
29894 			if (_la==INCLUDE) {
29895 				{
29896 				setState(4247);
29897 				match(INCLUDE);
29898 				setState(4248);
29899 				columnNamesWithSort();
29900 				}
29901 			}
29902 
29903 			setState(4253);
29904 			_errHandler.sync(this);
29905 			_la = _input.LA(1);
29906 			if (_la==WHERE) {
29907 				{
29908 				setState(4251);
29909 				match(WHERE);
29910 				setState(4252);
29911 				filterPredicate();
29912 				}
29913 			}
29914 
29915 			setState(4267);
29916 			_errHandler.sync(this);
29917 			_la = _input.LA(1);
29918 			if (_la==WITH) {
29919 				{
29920 				setState(4255);
29921 				match(WITH);
29922 				setState(4256);
29923 				match(LP_);
29924 				setState(4257);
29925 				relationalIndexOption();
29926 				setState(4262);
29927 				_errHandler.sync(this);
29928 				_la = _input.LA(1);
29929 				while (_la==COMMA_) {
29930 					{
29931 					{
29932 					setState(4258);
29933 					match(COMMA_);
29934 					setState(4259);
29935 					relationalIndexOption();
29936 					}
29937 					}
29938 					setState(4264);
29939 					_errHandler.sync(this);
29940 					_la = _input.LA(1);
29941 				}
29942 				setState(4265);
29943 				match(RP_);
29944 				}
29945 			}
29946 
29947 			setState(4278);
29948 			_errHandler.sync(this);
29949 			_la = _input.LA(1);
29950 			if (_la==ON) {
29951 				{
29952 				setState(4269);
29953 				match(ON);
29954 				setState(4276);
29955 				_errHandler.sync(this);
29956 				switch ( getInterpreter().adaptivePredict(_input,458,_ctx) ) {
29957 				case 1:
29958 					{
29959 					setState(4270);
29960 					schemaName();
29961 					setState(4271);
29962 					match(LP_);
29963 					setState(4272);
29964 					columnName();
29965 					setState(4273);
29966 					match(RP_);
29967 					}
29968 					break;
29969 				case 2:
29970 					{
29971 					setState(4275);
29972 					name();
29973 					}
29974 					break;
29975 				}
29976 				}
29977 			}
29978 
29979 			setState(4285);
29980 			_errHandler.sync(this);
29981 			_la = _input.LA(1);
29982 			if (_la==FILESTREAM_ON) {
29983 				{
29984 				setState(4280);
29985 				match(FILESTREAM_ON);
29986 				setState(4283);
29987 				_errHandler.sync(this);
29988 				switch (_input.LA(1)) {
29989 				case TRUNCATE:
29990 				case SCHEMA:
29991 				case COLUMNS:
29992 				case PRECISION:
29993 				case FUNCTION:
29994 				case TRIGGER:
29995 				case CAST:
29996 				case TRIM:
29997 				case SUBSTRING:
29998 				case OFF:
29999 				case GROUP:
30000 				case LIMIT:
30001 				case OFFSET:
30002 				case SAVEPOINT:
30003 				case BOOLEAN:
30004 				case ARRAY:
30005 				case DATE:
30006 				case TIMESTAMP:
30007 				case LOCALTIME:
30008 				case LOCALTIMESTAMP:
30009 				case YEAR:
30010 				case QUARTER:
30011 				case MONTH:
30012 				case WEEK:
30013 				case DAY:
30014 				case SECOND:
30015 				case MICROSECOND:
30016 				case MAX:
30017 				case MIN:
30018 				case SUM:
30019 				case COUNT:
30020 				case AVG:
30021 				case ENABLE:
30022 				case DISABLE:
30023 				case INSTANCE:
30024 				case DO:
30025 				case DEFINER:
30026 				case SQL:
30027 				case CASCADED:
30028 				case LOCAL:
30029 				case NEXT:
30030 				case NAME:
30031 				case INTEGER:
30032 				case TYPE:
30033 				case TEXT:
30034 				case VIEWS:
30035 				case READ_ONLY:
30036 				case DATABASE:
30037 				case RETURNS:
30038 				case DATEPART:
30039 				case PASSWORD:
30040 				case BINARY:
30041 				case HIDDEN_:
30042 				case MOD:
30043 				case PARTITION:
30044 				case PARTITIONS:
30045 				case TOP:
30046 				case ROW:
30047 				case ROWS:
30048 				case XOR:
30049 				case ALWAYS:
30050 				case ROLE:
30051 				case START:
30052 				case ALGORITHM:
30053 				case AUTO:
30054 				case BLOCKERS:
30055 				case CLUSTERED:
30056 				case NONCLUSTERED:
30057 				case COLUMNSTORE:
30058 				case CONTENT:
30059 				case YEARS:
30060 				case MONTHS:
30061 				case WEEKS:
30062 				case DAYS:
30063 				case MINUTES:
30064 				case DENY:
30065 				case DETERMINISTIC:
30066 				case DISTRIBUTION:
30067 				case DOCUMENT:
30068 				case DURABILITY:
30069 				case ENCRYPTED:
30070 				case FILESTREAM:
30071 				case FILETABLE:
30072 				case FILLFACTOR:
30073 				case FOLLOWING:
30074 				case HASH:
30075 				case HEAP:
30076 				case INBOUND:
30077 				case OUTBOUND:
30078 				case UNBOUNDED:
30079 				case INFINITE:
30080 				case LOGIN:
30081 				case MASKED:
30082 				case MAXDOP:
30083 				case MOVE:
30084 				case NOCHECK:
30085 				case OBJECT:
30086 				case ONLINE:
30087 				case OVER:
30088 				case PAGE:
30089 				case PAUSED:
30090 				case PERIOD:
30091 				case PERSISTED:
30092 				case PRECEDING:
30093 				case RANDOMIZED:
30094 				case RANGE:
30095 				case REBUILD:
30096 				case REPLICATE:
30097 				case REPLICATION:
30098 				case RESUMABLE:
30099 				case ROWGUIDCOL:
30100 				case SAVE:
30101 				case SELF:
30102 				case SPARSE:
30103 				case SWITCH:
30104 				case TRAN:
30105 				case TRANCOUNT:
30106 				case CONTROL:
30107 				case CONCAT:
30108 				case TAKE:
30109 				case OWNERSHIP:
30110 				case DEFINITION:
30111 				case APPLICATION:
30112 				case ASSEMBLY:
30113 				case SYMMETRIC:
30114 				case ASYMMETRIC:
30115 				case SERVER:
30116 				case RECEIVE:
30117 				case CHANGE:
30118 				case TRACE:
30119 				case TRACKING:
30120 				case RESOURCES:
30121 				case SETTINGS:
30122 				case STATE:
30123 				case AVAILABILITY:
30124 				case CREDENTIAL:
30125 				case ENDPOINT:
30126 				case EVENT:
30127 				case NOTIFICATION:
30128 				case LINKED:
30129 				case AUDIT:
30130 				case DDL:
30131 				case XML:
30132 				case IMPERSONATE:
30133 				case SECURABLES:
30134 				case AUTHENTICATE:
30135 				case EXTERNAL:
30136 				case ACCESS:
30137 				case ADMINISTER:
30138 				case BULK:
30139 				case OPERATIONS:
30140 				case UNSAFE:
30141 				case SHUTDOWN:
30142 				case SCOPED:
30143 				case CONFIGURATION:
30144 				case DATASPACE:
30145 				case SERVICE:
30146 				case CERTIFICATE:
30147 				case CONTRACT:
30148 				case ENCRYPTION:
30149 				case MASTER:
30150 				case DATA:
30151 				case SOURCE:
30152 				case FILE:
30153 				case FORMAT:
30154 				case LIBRARY:
30155 				case FULLTEXT:
30156 				case MASK:
30157 				case UNMASK:
30158 				case MESSAGE:
30159 				case REMOTE:
30160 				case BINDING:
30161 				case ROUTE:
30162 				case SECURITY:
30163 				case POLICY:
30164 				case AGGREGATE:
30165 				case QUEUE:
30166 				case RULE:
30167 				case SYNONYM:
30168 				case COLLECTION:
30169 				case SCRIPT:
30170 				case KILL:
30171 				case BACKUP:
30172 				case LOG:
30173 				case SHOWPLAN:
30174 				case SUBSCRIBE:
30175 				case QUERY:
30176 				case NOTIFICATIONS:
30177 				case CHECKPOINT:
30178 				case SEQUENCE:
30179 				case ABORT_AFTER_WAIT:
30180 				case ALLOW_PAGE_LOCKS:
30181 				case ALLOW_ROW_LOCKS:
30182 				case ALL_SPARSE_COLUMNS:
30183 				case BUCKET_COUNT:
30184 				case COLUMNSTORE_ARCHIVE:
30185 				case COLUMN_ENCRYPTION_KEY:
30186 				case COLUMN_SET:
30187 				case COMPRESSION_DELAY:
30188 				case DATABASE_DEAULT:
30189 				case DATA_COMPRESSION:
30190 				case DATA_CONSISTENCY_CHECK:
30191 				case ENCRYPTION_TYPE:
30192 				case SYSTEM_TIME:
30193 				case SYSTEM_VERSIONING:
30194 				case TEXTIMAGE_ON:
30195 				case WAIT_AT_LOW_PRIORITY:
30196 				case STATISTICS_INCREMENTAL:
30197 				case STATISTICS_NORECOMPUTE:
30198 				case ROUND_ROBIN:
30199 				case SCHEMA_AND_DATA:
30200 				case SCHEMA_ONLY:
30201 				case SORT_IN_TEMPDB:
30202 				case IGNORE_DUP_KEY:
30203 				case IMPLICIT_TRANSACTIONS:
30204 				case MAX_DURATION:
30205 				case MEMORY_OPTIMIZED:
30206 				case MIGRATION_STATE:
30207 				case PAD_INDEX:
30208 				case REMOTE_DATA_ARCHIVE:
30209 				case FILESTREAM_ON:
30210 				case FILETABLE_COLLATE_FILENAME:
30211 				case FILETABLE_DIRECTORY:
30212 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
30213 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
30214 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
30215 				case FILTER_PREDICATE:
30216 				case HISTORY_RETENTION_PERIOD:
30217 				case HISTORY_TABLE:
30218 				case LOCK_ESCALATION:
30219 				case DROP_EXISTING:
30220 				case ROW_NUMBER:
30221 				case FIRST:
30222 				case DATETIME2:
30223 				case OUTPUT:
30224 				case INSERTED:
30225 				case DELETED:
30226 				case FILENAME:
30227 				case SIZE:
30228 				case MAXSIZE:
30229 				case FILEGROWTH:
30230 				case UNLIMITED:
30231 				case KB:
30232 				case MB:
30233 				case GB:
30234 				case TB:
30235 				case CONTAINS:
30236 				case MEMORY_OPTIMIZED_DATA:
30237 				case FILEGROUP:
30238 				case NON_TRANSACTED_ACCESS:
30239 				case DB_CHAINING:
30240 				case TRUSTWORTHY:
30241 				case FORWARD_ONLY:
30242 				case KEYSET:
30243 				case FAST_FORWARD:
30244 				case SCROLL_LOCKS:
30245 				case OPTIMISTIC:
30246 				case TYPE_WARNING:
30247 				case SCHEMABINDING:
30248 				case CALLER:
30249 				case INPUT:
30250 				case OWNER:
30251 				case SNAPSHOT:
30252 				case REPEATABLE:
30253 				case SERIALIZABLE:
30254 				case NATIVE_COMPILATION:
30255 				case VIEW_METADATA:
30256 				case INSTEAD:
30257 				case APPEND:
30258 				case INCREMENT:
30259 				case CACHE:
30260 				case MINVALUE:
30261 				case MAXVALUE:
30262 				case RESTART:
30263 				case LOB_COMPACTION:
30264 				case COMPRESS_ALL_ROW_GROUPS:
30265 				case REORGANIZE:
30266 				case RESUME:
30267 				case PAUSE:
30268 				case ABORT:
30269 				case ACCELERATED_DATABASE_RECOVERY:
30270 				case PERSISTENT_VERSION_STORE_FILEGROUP:
30271 				case IMMEDIATE:
30272 				case NO_WAIT:
30273 				case TARGET_RECOVERY_TIME:
30274 				case SECONDS:
30275 				case HONOR_BROKER_PRIORITY:
30276 				case ERROR_BROKER_CONVERSATIONS:
30277 				case NEW_BROKER:
30278 				case DISABLE_BROKER:
30279 				case ENABLE_BROKER:
30280 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
30281 				case READ_COMMITTED_SNAPSHOT:
30282 				case ALLOW_SNAPSHOT_ISOLATION:
30283 				case RECURSIVE_TRIGGERS:
30284 				case QUOTED_IDENTIFIER:
30285 				case NUMERIC_ROUNDABORT:
30286 				case CONCAT_NULL_YIELDS_NULL:
30287 				case COMPATIBILITY_LEVEL:
30288 				case ARITHABORT:
30289 				case ANSI_WARNINGS:
30290 				case ANSI_PADDING:
30291 				case ANSI_NULLS:
30292 				case ANSI_NULL_DEFAULT:
30293 				case PAGE_VERIFY:
30294 				case CHECKSUM:
30295 				case TORN_PAGE_DETECTION:
30296 				case BULK_LOGGED:
30297 				case RECOVERY:
30298 				case TOTAL_EXECUTION_CPU_TIME_MS:
30299 				case TOTAL_COMPILE_CPU_TIME_MS:
30300 				case STALE_CAPTURE_POLICY_THRESHOLD:
30301 				case EXECUTION_COUNT:
30302 				case QUERY_CAPTURE_POLICY:
30303 				case WAIT_STATS_CAPTURE_MODE:
30304 				case MAX_PLANS_PER_QUERY:
30305 				case QUERY_CAPTURE_MODE:
30306 				case SIZE_BASED_CLEANUP_MODE:
30307 				case INTERVAL_LENGTH_MINUTES:
30308 				case MAX_STORAGE_SIZE_MB:
30309 				case DATA_FLUSH_INTERVAL_SECONDS:
30310 				case CLEANUP_POLICY:
30311 				case CUSTOM:
30312 				case STALE_QUERY_THRESHOLD_DAYS:
30313 				case OPERATION_MODE:
30314 				case QUERY_STORE:
30315 				case CURSOR_DEFAULT:
30316 				case GLOBAL:
30317 				case CURSOR_CLOSE_ON_COMMIT:
30318 				case HOURS:
30319 				case CHANGE_RETENTION:
30320 				case AUTO_CLEANUP:
30321 				case CHANGE_TRACKING:
30322 				case AUTOMATIC_TUNING:
30323 				case FORCE_LAST_GOOD_PLAN:
30324 				case AUTO_UPDATE_STATISTICS_ASYNC:
30325 				case AUTO_UPDATE_STATISTICS:
30326 				case AUTO_SHRINK:
30327 				case AUTO_CREATE_STATISTICS:
30328 				case INCREMENTAL:
30329 				case AUTO_CLOSE:
30330 				case DATA_RETENTION:
30331 				case TEMPORAL_HISTORY_RETENTION:
30332 				case EDITION:
30333 				case MIXED_PAGE_ALLOCATION:
30334 				case DISABLED:
30335 				case ALLOWED:
30336 				case HADR:
30337 				case MULTI_USER:
30338 				case RESTRICTED_USER:
30339 				case SINGLE_USER:
30340 				case OFFLINE:
30341 				case EMERGENCY:
30342 				case SUSPEND:
30343 				case DATE_CORRELATION_OPTIMIZATION:
30344 				case ELASTIC_POOL:
30345 				case SERVICE_OBJECTIVE:
30346 				case DATABASE_NAME:
30347 				case ALLOW_CONNECTIONS:
30348 				case GEO:
30349 				case NAMED:
30350 				case DATEFIRST:
30351 				case BACKUP_STORAGE_REDUNDANCY:
30352 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
30353 				case SECONDARY:
30354 				case FAILOVER:
30355 				case DEFAULT_FULLTEXT_LANGUAGE:
30356 				case DEFAULT_LANGUAGE:
30357 				case INLINE:
30358 				case NESTED_TRIGGERS:
30359 				case TRANSFORM_NOISE_WORDS:
30360 				case TWO_DIGIT_YEAR_CUTOFF:
30361 				case PERSISTENT_LOG_BUFFER:
30362 				case DIRECTORY_NAME:
30363 				case DATEFORMAT:
30364 				case DELAYED_DURABILITY:
30365 				case AUTHORIZATION:
30366 				case TRANSFER:
30367 				case PROVIDER:
30368 				case SEARCH:
30369 				case MEMBER:
30370 				case IDENTIFIER_:
30371 				case DELIMITED_IDENTIFIER_:
30372 					{
30373 					setState(4281);
30374 					name();
30375 					}
30376 					break;
30377 				case STRING_:
30378 				case NCHAR_TEXT:
30379 					{
30380 					setState(4282);
30381 					stringLiterals();
30382 					}
30383 					break;
30384 				default:
30385 					throw new NoViableAltException(this);
30386 				}
30387 				}
30388 			}
30389 
30390 			}
30391 		}
30392 		catch (RecognitionException re) {
30393 			_localctx.exception = re;
30394 			_errHandler.reportError(this, re);
30395 			_errHandler.recover(this, re);
30396 		}
30397 		finally {
30398 			exitRule();
30399 		}
30400 		return _localctx;
30401 	}
30402 
30403 	public static class FilterPredicateContext extends ParserRuleContext {
30404 		public List<ConjunctContext> conjunct() {
30405 			return getRuleContexts(ConjunctContext.class);
30406 		}
30407 		public ConjunctContext conjunct(int i) {
30408 			return getRuleContext(ConjunctContext.class,i);
30409 		}
30410 		public List<TerminalNode> AND() { return getTokens(SQLServerStatementParser.AND); }
30411 		public TerminalNode AND(int i) {
30412 			return getToken(SQLServerStatementParser.AND, i);
30413 		}
30414 		public FilterPredicateContext(ParserRuleContext parent, int invokingState) {
30415 			super(parent, invokingState);
30416 		}
30417 		@Override public int getRuleIndex() { return RULE_filterPredicate; }
30418 		@Override
30419 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30420 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilterPredicate(this);
30421 			else return visitor.visitChildren(this);
30422 		}
30423 	}
30424 
30425 	public final FilterPredicateContext filterPredicate() throws RecognitionException {
30426 		FilterPredicateContext _localctx = new FilterPredicateContext(_ctx, getState());
30427 		enterRule(_localctx, 612, RULE_filterPredicate);
30428 		int _la;
30429 		try {
30430 			enterOuterAlt(_localctx, 1);
30431 			{
30432 			setState(4287);
30433 			conjunct();
30434 			setState(4292);
30435 			_errHandler.sync(this);
30436 			_la = _input.LA(1);
30437 			while (_la==AND) {
30438 				{
30439 				{
30440 				setState(4288);
30441 				match(AND);
30442 				setState(4289);
30443 				conjunct();
30444 				}
30445 				}
30446 				setState(4294);
30447 				_errHandler.sync(this);
30448 				_la = _input.LA(1);
30449 			}
30450 			}
30451 		}
30452 		catch (RecognitionException re) {
30453 			_localctx.exception = re;
30454 			_errHandler.reportError(this, re);
30455 			_errHandler.recover(this, re);
30456 		}
30457 		finally {
30458 			exitRule();
30459 		}
30460 		return _localctx;
30461 	}
30462 
30463 	public static class ConjunctContext extends ParserRuleContext {
30464 		public ColumnNameContext columnName() {
30465 			return getRuleContext(ColumnNameContext.class,0);
30466 		}
30467 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
30468 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30469 		public List<ExprContext> expr() {
30470 			return getRuleContexts(ExprContext.class);
30471 		}
30472 		public ExprContext expr(int i) {
30473 			return getRuleContext(ExprContext.class,i);
30474 		}
30475 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30476 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30477 		public TerminalNode COMMA_(int i) {
30478 			return getToken(SQLServerStatementParser.COMMA_, i);
30479 		}
30480 		public ComparisonOperatorContext comparisonOperator() {
30481 			return getRuleContext(ComparisonOperatorContext.class,0);
30482 		}
30483 		public ConjunctContext(ParserRuleContext parent, int invokingState) {
30484 			super(parent, invokingState);
30485 		}
30486 		@Override public int getRuleIndex() { return RULE_conjunct; }
30487 		@Override
30488 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30489 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConjunct(this);
30490 			else return visitor.visitChildren(this);
30491 		}
30492 	}
30493 
30494 	public final ConjunctContext conjunct() throws RecognitionException {
30495 		ConjunctContext _localctx = new ConjunctContext(_ctx, getState());
30496 		enterRule(_localctx, 614, RULE_conjunct);
30497 		int _la;
30498 		try {
30499 			setState(4312);
30500 			_errHandler.sync(this);
30501 			switch ( getInterpreter().adaptivePredict(_input,464,_ctx) ) {
30502 			case 1:
30503 				enterOuterAlt(_localctx, 1);
30504 				{
30505 				setState(4295);
30506 				columnName();
30507 				setState(4296);
30508 				match(IN);
30509 				setState(4297);
30510 				match(LP_);
30511 				setState(4298);
30512 				expr(0);
30513 				setState(4303);
30514 				_errHandler.sync(this);
30515 				_la = _input.LA(1);
30516 				while (_la==COMMA_) {
30517 					{
30518 					{
30519 					setState(4299);
30520 					match(COMMA_);
30521 					setState(4300);
30522 					expr(0);
30523 					}
30524 					}
30525 					setState(4305);
30526 					_errHandler.sync(this);
30527 					_la = _input.LA(1);
30528 				}
30529 				setState(4306);
30530 				match(RP_);
30531 				}
30532 				break;
30533 			case 2:
30534 				enterOuterAlt(_localctx, 2);
30535 				{
30536 				setState(4308);
30537 				columnName();
30538 				setState(4309);
30539 				comparisonOperator();
30540 				setState(4310);
30541 				expr(0);
30542 				}
30543 				break;
30544 			}
30545 		}
30546 		catch (RecognitionException re) {
30547 			_localctx.exception = re;
30548 			_errHandler.reportError(this, re);
30549 			_errHandler.recover(this, re);
30550 		}
30551 		finally {
30552 			exitRule();
30553 		}
30554 		return _localctx;
30555 	}
30556 
30557 	public static class AlterIndexClauseContext extends ParserRuleContext {
30558 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
30559 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
30560 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30561 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
30562 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30563 		public List<RelationalIndexOptionContext> relationalIndexOption() {
30564 			return getRuleContexts(RelationalIndexOptionContext.class);
30565 		}
30566 		public RelationalIndexOptionContext relationalIndexOption(int i) {
30567 			return getRuleContext(RelationalIndexOptionContext.class,i);
30568 		}
30569 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30570 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
30571 		public ExprContext expr() {
30572 			return getRuleContext(ExprContext.class,0);
30573 		}
30574 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30575 		public TerminalNode COMMA_(int i) {
30576 			return getToken(SQLServerStatementParser.COMMA_, i);
30577 		}
30578 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
30579 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
30580 		public ReorganizeOptionContext reorganizeOption() {
30581 			return getRuleContext(ReorganizeOptionContext.class,0);
30582 		}
30583 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
30584 		public List<SetIndexOptionContext> setIndexOption() {
30585 			return getRuleContexts(SetIndexOptionContext.class);
30586 		}
30587 		public SetIndexOptionContext setIndexOption(int i) {
30588 			return getRuleContext(SetIndexOptionContext.class,i);
30589 		}
30590 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
30591 		public List<ResumableIndexOptionsContext> resumableIndexOptions() {
30592 			return getRuleContexts(ResumableIndexOptionsContext.class);
30593 		}
30594 		public ResumableIndexOptionsContext resumableIndexOptions(int i) {
30595 			return getRuleContext(ResumableIndexOptionsContext.class,i);
30596 		}
30597 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
30598 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
30599 		public AlterIndexClauseContext(ParserRuleContext parent, int invokingState) {
30600 			super(parent, invokingState);
30601 		}
30602 		@Override public int getRuleIndex() { return RULE_alterIndexClause; }
30603 		@Override
30604 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30605 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndexClause(this);
30606 			else return visitor.visitChildren(this);
30607 		}
30608 	}
30609 
30610 	public final AlterIndexClauseContext alterIndexClause() throws RecognitionException {
30611 		AlterIndexClauseContext _localctx = new AlterIndexClauseContext(_ctx, getState());
30612 		enterRule(_localctx, 616, RULE_alterIndexClause);
30613 		int _la;
30614 		try {
30615 			setState(4376);
30616 			_errHandler.sync(this);
30617 			switch (_input.LA(1)) {
30618 			case REBUILD:
30619 				enterOuterAlt(_localctx, 1);
30620 				{
30621 				setState(4314);
30622 				match(REBUILD);
30623 				setState(4321);
30624 				_errHandler.sync(this);
30625 				_la = _input.LA(1);
30626 				if (_la==PARTITION) {
30627 					{
30628 					setState(4315);
30629 					match(PARTITION);
30630 					setState(4316);
30631 					match(EQ_);
30632 					setState(4319);
30633 					_errHandler.sync(this);
30634 					switch (_input.LA(1)) {
30635 					case ALL:
30636 						{
30637 						setState(4317);
30638 						match(ALL);
30639 						}
30640 						break;
30641 					case NOT_:
30642 					case TILDE_:
30643 					case PLUS_:
30644 					case MINUS_:
30645 					case LP_:
30646 					case LBE_:
30647 					case QUESTION_:
30648 					case DOLLAR_:
30649 					case TRUNCATE:
30650 					case SCHEMA:
30651 					case COLUMNS:
30652 					case PRECISION:
30653 					case FUNCTION:
30654 					case TRIGGER:
30655 					case CASE:
30656 					case CAST:
30657 					case TRIM:
30658 					case SUBSTRING:
30659 					case OFF:
30660 					case IF:
30661 					case NOT:
30662 					case NULL:
30663 					case TRUE:
30664 					case FALSE:
30665 					case EXISTS:
30666 					case GROUP:
30667 					case LIMIT:
30668 					case OFFSET:
30669 					case SAVEPOINT:
30670 					case BOOLEAN:
30671 					case CHAR:
30672 					case ARRAY:
30673 					case INTERVAL:
30674 					case DATE:
30675 					case TIME:
30676 					case TIMESTAMP:
30677 					case LOCALTIME:
30678 					case LOCALTIMESTAMP:
30679 					case YEAR:
30680 					case QUARTER:
30681 					case MONTH:
30682 					case WEEK:
30683 					case DAY:
30684 					case SECOND:
30685 					case MICROSECOND:
30686 					case MAX:
30687 					case MIN:
30688 					case SUM:
30689 					case COUNT:
30690 					case AVG:
30691 					case ENABLE:
30692 					case DISABLE:
30693 					case INSTANCE:
30694 					case DO:
30695 					case DEFINER:
30696 					case SQL:
30697 					case CASCADED:
30698 					case LOCAL:
30699 					case NEXT:
30700 					case NAME:
30701 					case INTEGER:
30702 					case TYPE:
30703 					case TEXT:
30704 					case VIEWS:
30705 					case READ_ONLY:
30706 					case DATABASE:
30707 					case RETURNS:
30708 					case DATEPART:
30709 					case PASSWORD:
30710 					case JSON_OBJECT:
30711 					case JSON_ARRAY:
30712 					case FIRST_VALUE:
30713 					case LAST_VALUE:
30714 					case APPROX_PERCENTILE_CONT:
30715 					case APPROX_PERCENTILE_DISC:
30716 					case BINARY:
30717 					case HIDDEN_:
30718 					case MOD:
30719 					case PARTITION:
30720 					case PARTITIONS:
30721 					case TOP:
30722 					case ROW:
30723 					case ROWS:
30724 					case XOR:
30725 					case ALWAYS:
30726 					case ROLE:
30727 					case START:
30728 					case ALGORITHM:
30729 					case AUTO:
30730 					case BLOCKERS:
30731 					case CLUSTERED:
30732 					case NONCLUSTERED:
30733 					case COLUMNSTORE:
30734 					case CONTENT:
30735 					case CONVERT:
30736 					case YEARS:
30737 					case MONTHS:
30738 					case WEEKS:
30739 					case DAYS:
30740 					case MINUTES:
30741 					case DENY:
30742 					case DETERMINISTIC:
30743 					case DISTRIBUTION:
30744 					case DOCUMENT:
30745 					case DURABILITY:
30746 					case ENCRYPTED:
30747 					case FILESTREAM:
30748 					case FILETABLE:
30749 					case FILLFACTOR:
30750 					case FOLLOWING:
30751 					case HASH:
30752 					case HEAP:
30753 					case INBOUND:
30754 					case OUTBOUND:
30755 					case UNBOUNDED:
30756 					case INFINITE:
30757 					case LOGIN:
30758 					case MASKED:
30759 					case MAXDOP:
30760 					case MOVE:
30761 					case NOCHECK:
30762 					case OBJECT:
30763 					case ONLINE:
30764 					case OVER:
30765 					case PAGE:
30766 					case PAUSED:
30767 					case PERIOD:
30768 					case PERSISTED:
30769 					case PRECEDING:
30770 					case RANDOMIZED:
30771 					case RANGE:
30772 					case REBUILD:
30773 					case REPLICATE:
30774 					case REPLICATION:
30775 					case RESUMABLE:
30776 					case ROWGUIDCOL:
30777 					case SAVE:
30778 					case SELF:
30779 					case SPARSE:
30780 					case SWITCH:
30781 					case TRAN:
30782 					case TRANCOUNT:
30783 					case CONTROL:
30784 					case CONCAT:
30785 					case TAKE:
30786 					case OWNERSHIP:
30787 					case DEFINITION:
30788 					case APPLICATION:
30789 					case ASSEMBLY:
30790 					case SYMMETRIC:
30791 					case ASYMMETRIC:
30792 					case SERVER:
30793 					case RECEIVE:
30794 					case CHANGE:
30795 					case TRACE:
30796 					case TRACKING:
30797 					case RESOURCES:
30798 					case SETTINGS:
30799 					case STATE:
30800 					case AVAILABILITY:
30801 					case CREDENTIAL:
30802 					case ENDPOINT:
30803 					case EVENT:
30804 					case NOTIFICATION:
30805 					case LINKED:
30806 					case AUDIT:
30807 					case DDL:
30808 					case XML:
30809 					case IMPERSONATE:
30810 					case SECURABLES:
30811 					case AUTHENTICATE:
30812 					case EXTERNAL:
30813 					case ACCESS:
30814 					case ADMINISTER:
30815 					case BULK:
30816 					case OPERATIONS:
30817 					case UNSAFE:
30818 					case SHUTDOWN:
30819 					case SCOPED:
30820 					case CONFIGURATION:
30821 					case DATASPACE:
30822 					case SERVICE:
30823 					case CERTIFICATE:
30824 					case CONTRACT:
30825 					case ENCRYPTION:
30826 					case MASTER:
30827 					case DATA:
30828 					case SOURCE:
30829 					case FILE:
30830 					case FORMAT:
30831 					case LIBRARY:
30832 					case FULLTEXT:
30833 					case MASK:
30834 					case UNMASK:
30835 					case MESSAGE:
30836 					case REMOTE:
30837 					case BINDING:
30838 					case ROUTE:
30839 					case SECURITY:
30840 					case POLICY:
30841 					case AGGREGATE:
30842 					case QUEUE:
30843 					case RULE:
30844 					case SYNONYM:
30845 					case COLLECTION:
30846 					case SCRIPT:
30847 					case KILL:
30848 					case BACKUP:
30849 					case LOG:
30850 					case SHOWPLAN:
30851 					case SUBSCRIBE:
30852 					case QUERY:
30853 					case NOTIFICATIONS:
30854 					case CHECKPOINT:
30855 					case SEQUENCE:
30856 					case ABORT_AFTER_WAIT:
30857 					case ALLOW_PAGE_LOCKS:
30858 					case ALLOW_ROW_LOCKS:
30859 					case ALL_SPARSE_COLUMNS:
30860 					case BUCKET_COUNT:
30861 					case COLUMNSTORE_ARCHIVE:
30862 					case COLUMN_ENCRYPTION_KEY:
30863 					case COLUMN_SET:
30864 					case COMPRESSION_DELAY:
30865 					case DATABASE_DEAULT:
30866 					case DATA_COMPRESSION:
30867 					case DATA_CONSISTENCY_CHECK:
30868 					case ENCRYPTION_TYPE:
30869 					case SYSTEM_TIME:
30870 					case SYSTEM_VERSIONING:
30871 					case TEXTIMAGE_ON:
30872 					case WAIT_AT_LOW_PRIORITY:
30873 					case STATISTICS_INCREMENTAL:
30874 					case STATISTICS_NORECOMPUTE:
30875 					case ROUND_ROBIN:
30876 					case SCHEMA_AND_DATA:
30877 					case SCHEMA_ONLY:
30878 					case SORT_IN_TEMPDB:
30879 					case IGNORE_DUP_KEY:
30880 					case IMPLICIT_TRANSACTIONS:
30881 					case MAX_DURATION:
30882 					case MEMORY_OPTIMIZED:
30883 					case MIGRATION_STATE:
30884 					case PAD_INDEX:
30885 					case REMOTE_DATA_ARCHIVE:
30886 					case FILESTREAM_ON:
30887 					case FILETABLE_COLLATE_FILENAME:
30888 					case FILETABLE_DIRECTORY:
30889 					case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
30890 					case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
30891 					case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
30892 					case FILTER_PREDICATE:
30893 					case HISTORY_RETENTION_PERIOD:
30894 					case HISTORY_TABLE:
30895 					case LOCK_ESCALATION:
30896 					case DROP_EXISTING:
30897 					case ROW_NUMBER:
30898 					case FIRST:
30899 					case DATETIME2:
30900 					case OUTPUT:
30901 					case INSERTED:
30902 					case DELETED:
30903 					case FILENAME:
30904 					case SIZE:
30905 					case MAXSIZE:
30906 					case FILEGROWTH:
30907 					case UNLIMITED:
30908 					case KB:
30909 					case MB:
30910 					case GB:
30911 					case TB:
30912 					case CONTAINS:
30913 					case MEMORY_OPTIMIZED_DATA:
30914 					case FILEGROUP:
30915 					case NON_TRANSACTED_ACCESS:
30916 					case DB_CHAINING:
30917 					case TRUSTWORTHY:
30918 					case FORWARD_ONLY:
30919 					case KEYSET:
30920 					case FAST_FORWARD:
30921 					case SCROLL_LOCKS:
30922 					case OPTIMISTIC:
30923 					case TYPE_WARNING:
30924 					case SCHEMABINDING:
30925 					case CALLER:
30926 					case INPUT:
30927 					case OWNER:
30928 					case SNAPSHOT:
30929 					case REPEATABLE:
30930 					case SERIALIZABLE:
30931 					case NATIVE_COMPILATION:
30932 					case VIEW_METADATA:
30933 					case INSTEAD:
30934 					case APPEND:
30935 					case INCREMENT:
30936 					case CACHE:
30937 					case MINVALUE:
30938 					case MAXVALUE:
30939 					case RESTART:
30940 					case LOB_COMPACTION:
30941 					case COMPRESS_ALL_ROW_GROUPS:
30942 					case REORGANIZE:
30943 					case RESUME:
30944 					case PAUSE:
30945 					case ABORT:
30946 					case ACCELERATED_DATABASE_RECOVERY:
30947 					case PERSISTENT_VERSION_STORE_FILEGROUP:
30948 					case IMMEDIATE:
30949 					case NO_WAIT:
30950 					case TARGET_RECOVERY_TIME:
30951 					case SECONDS:
30952 					case HONOR_BROKER_PRIORITY:
30953 					case ERROR_BROKER_CONVERSATIONS:
30954 					case NEW_BROKER:
30955 					case DISABLE_BROKER:
30956 					case ENABLE_BROKER:
30957 					case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
30958 					case READ_COMMITTED_SNAPSHOT:
30959 					case ALLOW_SNAPSHOT_ISOLATION:
30960 					case RECURSIVE_TRIGGERS:
30961 					case QUOTED_IDENTIFIER:
30962 					case NUMERIC_ROUNDABORT:
30963 					case CONCAT_NULL_YIELDS_NULL:
30964 					case COMPATIBILITY_LEVEL:
30965 					case ARITHABORT:
30966 					case ANSI_WARNINGS:
30967 					case ANSI_PADDING:
30968 					case ANSI_NULLS:
30969 					case ANSI_NULL_DEFAULT:
30970 					case PAGE_VERIFY:
30971 					case CHECKSUM:
30972 					case TORN_PAGE_DETECTION:
30973 					case BULK_LOGGED:
30974 					case RECOVERY:
30975 					case TOTAL_EXECUTION_CPU_TIME_MS:
30976 					case TOTAL_COMPILE_CPU_TIME_MS:
30977 					case STALE_CAPTURE_POLICY_THRESHOLD:
30978 					case EXECUTION_COUNT:
30979 					case QUERY_CAPTURE_POLICY:
30980 					case WAIT_STATS_CAPTURE_MODE:
30981 					case MAX_PLANS_PER_QUERY:
30982 					case QUERY_CAPTURE_MODE:
30983 					case SIZE_BASED_CLEANUP_MODE:
30984 					case INTERVAL_LENGTH_MINUTES:
30985 					case MAX_STORAGE_SIZE_MB:
30986 					case DATA_FLUSH_INTERVAL_SECONDS:
30987 					case CLEANUP_POLICY:
30988 					case CUSTOM:
30989 					case STALE_QUERY_THRESHOLD_DAYS:
30990 					case OPERATION_MODE:
30991 					case QUERY_STORE:
30992 					case CURSOR_DEFAULT:
30993 					case GLOBAL:
30994 					case CURSOR_CLOSE_ON_COMMIT:
30995 					case HOURS:
30996 					case CHANGE_RETENTION:
30997 					case AUTO_CLEANUP:
30998 					case CHANGE_TRACKING:
30999 					case AUTOMATIC_TUNING:
31000 					case FORCE_LAST_GOOD_PLAN:
31001 					case AUTO_UPDATE_STATISTICS_ASYNC:
31002 					case AUTO_UPDATE_STATISTICS:
31003 					case AUTO_SHRINK:
31004 					case AUTO_CREATE_STATISTICS:
31005 					case INCREMENTAL:
31006 					case AUTO_CLOSE:
31007 					case DATA_RETENTION:
31008 					case TEMPORAL_HISTORY_RETENTION:
31009 					case EDITION:
31010 					case MIXED_PAGE_ALLOCATION:
31011 					case DISABLED:
31012 					case ALLOWED:
31013 					case HADR:
31014 					case MULTI_USER:
31015 					case RESTRICTED_USER:
31016 					case SINGLE_USER:
31017 					case OFFLINE:
31018 					case EMERGENCY:
31019 					case SUSPEND:
31020 					case DATE_CORRELATION_OPTIMIZATION:
31021 					case ELASTIC_POOL:
31022 					case SERVICE_OBJECTIVE:
31023 					case DATABASE_NAME:
31024 					case ALLOW_CONNECTIONS:
31025 					case GEO:
31026 					case NAMED:
31027 					case DATEFIRST:
31028 					case BACKUP_STORAGE_REDUNDANCY:
31029 					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
31030 					case SECONDARY:
31031 					case FAILOVER:
31032 					case DEFAULT_FULLTEXT_LANGUAGE:
31033 					case DEFAULT_LANGUAGE:
31034 					case INLINE:
31035 					case NESTED_TRIGGERS:
31036 					case TRANSFORM_NOISE_WORDS:
31037 					case TWO_DIGIT_YEAR_CUTOFF:
31038 					case PERSISTENT_LOG_BUFFER:
31039 					case DIRECTORY_NAME:
31040 					case DATEFORMAT:
31041 					case DELAYED_DURABILITY:
31042 					case AUTHORIZATION:
31043 					case TRANSFER:
31044 					case PROVIDER:
31045 					case SEARCH:
31046 					case MEMBER:
31047 					case OPENJSON:
31048 					case OPENROWSET:
31049 					case TRY_CAST:
31050 					case TRY_CONVERT:
31051 					case IDENTIFIER_:
31052 					case DELIMITED_IDENTIFIER_:
31053 					case STRING_:
31054 					case NUMBER_:
31055 					case HEX_DIGIT_:
31056 					case BIT_NUM_:
31057 					case NCHAR_TEXT:
31058 						{
31059 						setState(4318);
31060 						expr(0);
31061 						}
31062 						break;
31063 					default:
31064 						throw new NoViableAltException(this);
31065 					}
31066 					}
31067 				}
31068 
31069 				setState(4335);
31070 				_errHandler.sync(this);
31071 				_la = _input.LA(1);
31072 				if (_la==WITH) {
31073 					{
31074 					setState(4323);
31075 					match(WITH);
31076 					setState(4324);
31077 					match(LP_);
31078 					setState(4325);
31079 					relationalIndexOption();
31080 					setState(4330);
31081 					_errHandler.sync(this);
31082 					_la = _input.LA(1);
31083 					while (_la==COMMA_) {
31084 						{
31085 						{
31086 						setState(4326);
31087 						match(COMMA_);
31088 						setState(4327);
31089 						relationalIndexOption();
31090 						}
31091 						}
31092 						setState(4332);
31093 						_errHandler.sync(this);
31094 						_la = _input.LA(1);
31095 					}
31096 					setState(4333);
31097 					match(RP_);
31098 					}
31099 				}
31100 
31101 				}
31102 				break;
31103 			case DISABLE:
31104 				enterOuterAlt(_localctx, 2);
31105 				{
31106 				setState(4337);
31107 				match(DISABLE);
31108 				}
31109 				break;
31110 			case REORGANIZE:
31111 				enterOuterAlt(_localctx, 3);
31112 				{
31113 				setState(4338);
31114 				match(REORGANIZE);
31115 				setState(4342);
31116 				_errHandler.sync(this);
31117 				_la = _input.LA(1);
31118 				if (_la==PARTITION) {
31119 					{
31120 					setState(4339);
31121 					match(PARTITION);
31122 					setState(4340);
31123 					match(EQ_);
31124 					setState(4341);
31125 					expr(0);
31126 					}
31127 				}
31128 
31129 				setState(4349);
31130 				_errHandler.sync(this);
31131 				_la = _input.LA(1);
31132 				if (_la==WITH) {
31133 					{
31134 					setState(4344);
31135 					match(WITH);
31136 					setState(4345);
31137 					match(LP_);
31138 					setState(4346);
31139 					reorganizeOption();
31140 					setState(4347);
31141 					match(RP_);
31142 					}
31143 				}
31144 
31145 				}
31146 				break;
31147 			case SET:
31148 				enterOuterAlt(_localctx, 4);
31149 				{
31150 				setState(4351);
31151 				match(SET);
31152 				setState(4352);
31153 				match(LP_);
31154 				setState(4353);
31155 				setIndexOption();
31156 				{
31157 				setState(4354);
31158 				match(COMMA_);
31159 				setState(4355);
31160 				setIndexOption();
31161 				}
31162 				setState(4357);
31163 				match(RP_);
31164 				}
31165 				break;
31166 			case RESUME:
31167 				enterOuterAlt(_localctx, 5);
31168 				{
31169 				setState(4359);
31170 				match(RESUME);
31171 				setState(4372);
31172 				_errHandler.sync(this);
31173 				_la = _input.LA(1);
31174 				if (_la==WITH) {
31175 					{
31176 					setState(4360);
31177 					match(WITH);
31178 					setState(4361);
31179 					match(LP_);
31180 					setState(4362);
31181 					resumableIndexOptions();
31182 					setState(4367);
31183 					_errHandler.sync(this);
31184 					_la = _input.LA(1);
31185 					while (_la==COMMA_) {
31186 						{
31187 						{
31188 						setState(4363);
31189 						match(COMMA_);
31190 						setState(4364);
31191 						resumableIndexOptions();
31192 						}
31193 						}
31194 						setState(4369);
31195 						_errHandler.sync(this);
31196 						_la = _input.LA(1);
31197 					}
31198 					setState(4370);
31199 					match(RP_);
31200 					}
31201 				}
31202 
31203 				}
31204 				break;
31205 			case PAUSE:
31206 				enterOuterAlt(_localctx, 6);
31207 				{
31208 				setState(4374);
31209 				match(PAUSE);
31210 				}
31211 				break;
31212 			case ABORT:
31213 				enterOuterAlt(_localctx, 7);
31214 				{
31215 				setState(4375);
31216 				match(ABORT);
31217 				}
31218 				break;
31219 			default:
31220 				throw new NoViableAltException(this);
31221 			}
31222 		}
31223 		catch (RecognitionException re) {
31224 			_localctx.exception = re;
31225 			_errHandler.reportError(this, re);
31226 			_errHandler.recover(this, re);
31227 		}
31228 		finally {
31229 			exitRule();
31230 		}
31231 		return _localctx;
31232 	}
31233 
31234 	public static class RelationalIndexOptionContext extends ParserRuleContext {
31235 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
31236 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31237 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31238 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31239 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
31240 		public ExprContext expr() {
31241 			return getRuleContext(ExprContext.class,0);
31242 		}
31243 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
31244 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
31245 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
31246 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
31247 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
31248 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
31249 		public LowPriorityLockWaitContext lowPriorityLockWait() {
31250 			return getRuleContext(LowPriorityLockWaitContext.class,0);
31251 		}
31252 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
31253 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
31254 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31255 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
31256 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
31257 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
31258 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
31259 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
31260 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
31261 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
31262 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
31263 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
31264 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
31265 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
31266 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31267 		public List<PartitionNumberRangeContext> partitionNumberRange() {
31268 			return getRuleContexts(PartitionNumberRangeContext.class);
31269 		}
31270 		public PartitionNumberRangeContext partitionNumberRange(int i) {
31271 			return getRuleContext(PartitionNumberRangeContext.class,i);
31272 		}
31273 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
31274 		public TerminalNode COMMA_(int i) {
31275 			return getToken(SQLServerStatementParser.COMMA_, i);
31276 		}
31277 		public RelationalIndexOptionContext(ParserRuleContext parent, int invokingState) {
31278 			super(parent, invokingState);
31279 		}
31280 		@Override public int getRuleIndex() { return RULE_relationalIndexOption; }
31281 		@Override
31282 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31283 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRelationalIndexOption(this);
31284 			else return visitor.visitChildren(this);
31285 		}
31286 	}
31287 
31288 	public final RelationalIndexOptionContext relationalIndexOption() throws RecognitionException {
31289 		RelationalIndexOptionContext _localctx = new RelationalIndexOptionContext(_ctx, getState());
31290 		enterRule(_localctx, 618, RULE_relationalIndexOption);
31291 		int _la;
31292 		try {
31293 			int _alt;
31294 			setState(4445);
31295 			_errHandler.sync(this);
31296 			switch (_input.LA(1)) {
31297 			case PAD_INDEX:
31298 				enterOuterAlt(_localctx, 1);
31299 				{
31300 				setState(4378);
31301 				match(PAD_INDEX);
31302 				setState(4379);
31303 				match(EQ_);
31304 				setState(4380);
31305 				_la = _input.LA(1);
31306 				if ( !(_la==ON || _la==OFF) ) {
31307 				_errHandler.recoverInline(this);
31308 				}
31309 				else {
31310 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31311 					_errHandler.reportMatch(this);
31312 					consume();
31313 				}
31314 				}
31315 				break;
31316 			case FILLFACTOR:
31317 				enterOuterAlt(_localctx, 2);
31318 				{
31319 				setState(4381);
31320 				match(FILLFACTOR);
31321 				setState(4382);
31322 				match(EQ_);
31323 				setState(4383);
31324 				expr(0);
31325 				}
31326 				break;
31327 			case SORT_IN_TEMPDB:
31328 				enterOuterAlt(_localctx, 3);
31329 				{
31330 				setState(4384);
31331 				match(SORT_IN_TEMPDB);
31332 				setState(4385);
31333 				match(EQ_);
31334 				setState(4386);
31335 				_la = _input.LA(1);
31336 				if ( !(_la==ON || _la==OFF) ) {
31337 				_errHandler.recoverInline(this);
31338 				}
31339 				else {
31340 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31341 					_errHandler.reportMatch(this);
31342 					consume();
31343 				}
31344 				}
31345 				break;
31346 			case IGNORE_DUP_KEY:
31347 				enterOuterAlt(_localctx, 4);
31348 				{
31349 				setState(4387);
31350 				match(IGNORE_DUP_KEY);
31351 				setState(4388);
31352 				match(EQ_);
31353 				setState(4389);
31354 				_la = _input.LA(1);
31355 				if ( !(_la==ON || _la==OFF) ) {
31356 				_errHandler.recoverInline(this);
31357 				}
31358 				else {
31359 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31360 					_errHandler.reportMatch(this);
31361 					consume();
31362 				}
31363 				}
31364 				break;
31365 			case STATISTICS_NORECOMPUTE:
31366 				enterOuterAlt(_localctx, 5);
31367 				{
31368 				setState(4390);
31369 				match(STATISTICS_NORECOMPUTE);
31370 				setState(4391);
31371 				match(EQ_);
31372 				setState(4392);
31373 				_la = _input.LA(1);
31374 				if ( !(_la==ON || _la==OFF) ) {
31375 				_errHandler.recoverInline(this);
31376 				}
31377 				else {
31378 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31379 					_errHandler.reportMatch(this);
31380 					consume();
31381 				}
31382 				}
31383 				break;
31384 			case STATISTICS_INCREMENTAL:
31385 				enterOuterAlt(_localctx, 6);
31386 				{
31387 				setState(4393);
31388 				match(STATISTICS_INCREMENTAL);
31389 				setState(4394);
31390 				match(EQ_);
31391 				setState(4395);
31392 				_la = _input.LA(1);
31393 				if ( !(_la==ON || _la==OFF) ) {
31394 				_errHandler.recoverInline(this);
31395 				}
31396 				else {
31397 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31398 					_errHandler.reportMatch(this);
31399 					consume();
31400 				}
31401 				}
31402 				break;
31403 			case DROP_EXISTING:
31404 				enterOuterAlt(_localctx, 7);
31405 				{
31406 				setState(4396);
31407 				match(DROP_EXISTING);
31408 				setState(4397);
31409 				match(EQ_);
31410 				setState(4398);
31411 				_la = _input.LA(1);
31412 				if ( !(_la==ON || _la==OFF) ) {
31413 				_errHandler.recoverInline(this);
31414 				}
31415 				else {
31416 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31417 					_errHandler.reportMatch(this);
31418 					consume();
31419 				}
31420 				}
31421 				break;
31422 			case ONLINE:
31423 				enterOuterAlt(_localctx, 8);
31424 				{
31425 				setState(4399);
31426 				match(ONLINE);
31427 				setState(4400);
31428 				match(EQ_);
31429 				setState(4406);
31430 				_errHandler.sync(this);
31431 				switch (_input.LA(1)) {
31432 				case ON:
31433 					{
31434 					setState(4401);
31435 					match(ON);
31436 					setState(4403);
31437 					_errHandler.sync(this);
31438 					_la = _input.LA(1);
31439 					if (_la==WAIT_AT_LOW_PRIORITY) {
31440 						{
31441 						setState(4402);
31442 						lowPriorityLockWait();
31443 						}
31444 					}
31445 
31446 					}
31447 					break;
31448 				case OFF:
31449 					{
31450 					setState(4405);
31451 					match(OFF);
31452 					}
31453 					break;
31454 				default:
31455 					throw new NoViableAltException(this);
31456 				}
31457 				}
31458 				break;
31459 			case RESUMABLE:
31460 				enterOuterAlt(_localctx, 9);
31461 				{
31462 				setState(4408);
31463 				match(RESUMABLE);
31464 				setState(4409);
31465 				match(EQ_);
31466 				setState(4410);
31467 				_la = _input.LA(1);
31468 				if ( !(_la==ON || _la==OFF) ) {
31469 				_errHandler.recoverInline(this);
31470 				}
31471 				else {
31472 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31473 					_errHandler.reportMatch(this);
31474 					consume();
31475 				}
31476 				}
31477 				break;
31478 			case MAX_DURATION:
31479 				enterOuterAlt(_localctx, 10);
31480 				{
31481 				setState(4411);
31482 				match(MAX_DURATION);
31483 				setState(4412);
31484 				match(EQ_);
31485 				setState(4413);
31486 				expr(0);
31487 				setState(4415);
31488 				_errHandler.sync(this);
31489 				_la = _input.LA(1);
31490 				if (_la==MINUTES) {
31491 					{
31492 					setState(4414);
31493 					match(MINUTES);
31494 					}
31495 				}
31496 
31497 				}
31498 				break;
31499 			case ALLOW_ROW_LOCKS:
31500 				enterOuterAlt(_localctx, 11);
31501 				{
31502 				setState(4417);
31503 				match(ALLOW_ROW_LOCKS);
31504 				setState(4418);
31505 				match(EQ_);
31506 				setState(4419);
31507 				_la = _input.LA(1);
31508 				if ( !(_la==ON || _la==OFF) ) {
31509 				_errHandler.recoverInline(this);
31510 				}
31511 				else {
31512 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31513 					_errHandler.reportMatch(this);
31514 					consume();
31515 				}
31516 				}
31517 				break;
31518 			case ALLOW_PAGE_LOCKS:
31519 				enterOuterAlt(_localctx, 12);
31520 				{
31521 				setState(4420);
31522 				match(ALLOW_PAGE_LOCKS);
31523 				setState(4421);
31524 				match(EQ_);
31525 				setState(4422);
31526 				_la = _input.LA(1);
31527 				if ( !(_la==ON || _la==OFF) ) {
31528 				_errHandler.recoverInline(this);
31529 				}
31530 				else {
31531 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31532 					_errHandler.reportMatch(this);
31533 					consume();
31534 				}
31535 				}
31536 				break;
31537 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
31538 				enterOuterAlt(_localctx, 13);
31539 				{
31540 				setState(4423);
31541 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
31542 				setState(4424);
31543 				match(EQ_);
31544 				setState(4425);
31545 				_la = _input.LA(1);
31546 				if ( !(_la==ON || _la==OFF) ) {
31547 				_errHandler.recoverInline(this);
31548 				}
31549 				else {
31550 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31551 					_errHandler.reportMatch(this);
31552 					consume();
31553 				}
31554 				}
31555 				break;
31556 			case MAXDOP:
31557 				enterOuterAlt(_localctx, 14);
31558 				{
31559 				setState(4426);
31560 				match(MAXDOP);
31561 				setState(4427);
31562 				match(EQ_);
31563 				setState(4428);
31564 				expr(0);
31565 				}
31566 				break;
31567 			case DATA_COMPRESSION:
31568 				enterOuterAlt(_localctx, 15);
31569 				{
31570 				setState(4429);
31571 				match(DATA_COMPRESSION);
31572 				setState(4430);
31573 				match(EQ_);
31574 				setState(4431);
31575 				_la = _input.LA(1);
31576 				if ( !(((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (NONE - 248)) | (1L << (PAGE - 248)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
31577 				_errHandler.recoverInline(this);
31578 				}
31579 				else {
31580 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31581 					_errHandler.reportMatch(this);
31582 					consume();
31583 				}
31584 				setState(4443);
31585 				_errHandler.sync(this);
31586 				_la = _input.LA(1);
31587 				if (_la==ON) {
31588 					{
31589 					setState(4432);
31590 					match(ON);
31591 					setState(4433);
31592 					match(PARTITIONS);
31593 					setState(4434);
31594 					match(LP_);
31595 					setState(4435);
31596 					partitionNumberRange();
31597 					setState(4440);
31598 					_errHandler.sync(this);
31599 					_alt = getInterpreter().adaptivePredict(_input,477,_ctx);
31600 					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
31601 						if ( _alt==1 ) {
31602 							{
31603 							{
31604 							setState(4436);
31605 							match(COMMA_);
31606 							setState(4437);
31607 							partitionNumberRange();
31608 							}
31609 							} 
31610 						}
31611 						setState(4442);
31612 						_errHandler.sync(this);
31613 						_alt = getInterpreter().adaptivePredict(_input,477,_ctx);
31614 					}
31615 					}
31616 				}
31617 
31618 				}
31619 				break;
31620 			default:
31621 				throw new NoViableAltException(this);
31622 			}
31623 		}
31624 		catch (RecognitionException re) {
31625 			_localctx.exception = re;
31626 			_errHandler.reportError(this, re);
31627 			_errHandler.recover(this, re);
31628 		}
31629 		finally {
31630 			exitRule();
31631 		}
31632 		return _localctx;
31633 	}
31634 
31635 	public static class PartitionNumberRangeContext extends ParserRuleContext {
31636 		public List<ExprContext> expr() {
31637 			return getRuleContexts(ExprContext.class);
31638 		}
31639 		public ExprContext expr(int i) {
31640 			return getRuleContext(ExprContext.class,i);
31641 		}
31642 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
31643 		public PartitionNumberRangeContext(ParserRuleContext parent, int invokingState) {
31644 			super(parent, invokingState);
31645 		}
31646 		@Override public int getRuleIndex() { return RULE_partitionNumberRange; }
31647 		@Override
31648 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31649 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionNumberRange(this);
31650 			else return visitor.visitChildren(this);
31651 		}
31652 	}
31653 
31654 	public final PartitionNumberRangeContext partitionNumberRange() throws RecognitionException {
31655 		PartitionNumberRangeContext _localctx = new PartitionNumberRangeContext(_ctx, getState());
31656 		enterRule(_localctx, 620, RULE_partitionNumberRange);
31657 		int _la;
31658 		try {
31659 			enterOuterAlt(_localctx, 1);
31660 			{
31661 			setState(4447);
31662 			expr(0);
31663 			setState(4450);
31664 			_errHandler.sync(this);
31665 			_la = _input.LA(1);
31666 			if (_la==TO) {
31667 				{
31668 				setState(4448);
31669 				match(TO);
31670 				setState(4449);
31671 				expr(0);
31672 				}
31673 			}
31674 
31675 			}
31676 		}
31677 		catch (RecognitionException re) {
31678 			_localctx.exception = re;
31679 			_errHandler.reportError(this, re);
31680 			_errHandler.recover(this, re);
31681 		}
31682 		finally {
31683 			exitRule();
31684 		}
31685 		return _localctx;
31686 	}
31687 
31688 	public static class ReorganizeOptionContext extends ParserRuleContext {
31689 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
31690 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31691 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31692 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31693 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
31694 		public ReorganizeOptionContext(ParserRuleContext parent, int invokingState) {
31695 			super(parent, invokingState);
31696 		}
31697 		@Override public int getRuleIndex() { return RULE_reorganizeOption; }
31698 		@Override
31699 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31700 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitReorganizeOption(this);
31701 			else return visitor.visitChildren(this);
31702 		}
31703 	}
31704 
31705 	public final ReorganizeOptionContext reorganizeOption() throws RecognitionException {
31706 		ReorganizeOptionContext _localctx = new ReorganizeOptionContext(_ctx, getState());
31707 		enterRule(_localctx, 622, RULE_reorganizeOption);
31708 		int _la;
31709 		try {
31710 			setState(4458);
31711 			_errHandler.sync(this);
31712 			switch (_input.LA(1)) {
31713 			case LOB_COMPACTION:
31714 				enterOuterAlt(_localctx, 1);
31715 				{
31716 				setState(4452);
31717 				match(LOB_COMPACTION);
31718 				setState(4453);
31719 				match(EQ_);
31720 				setState(4454);
31721 				_la = _input.LA(1);
31722 				if ( !(_la==ON || _la==OFF) ) {
31723 				_errHandler.recoverInline(this);
31724 				}
31725 				else {
31726 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31727 					_errHandler.reportMatch(this);
31728 					consume();
31729 				}
31730 				}
31731 				break;
31732 			case COMPRESS_ALL_ROW_GROUPS:
31733 				enterOuterAlt(_localctx, 2);
31734 				{
31735 				setState(4455);
31736 				match(COMPRESS_ALL_ROW_GROUPS);
31737 				setState(4456);
31738 				match(EQ_);
31739 				setState(4457);
31740 				_la = _input.LA(1);
31741 				if ( !(_la==ON || _la==OFF) ) {
31742 				_errHandler.recoverInline(this);
31743 				}
31744 				else {
31745 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31746 					_errHandler.reportMatch(this);
31747 					consume();
31748 				}
31749 				}
31750 				break;
31751 			default:
31752 				throw new NoViableAltException(this);
31753 			}
31754 		}
31755 		catch (RecognitionException re) {
31756 			_localctx.exception = re;
31757 			_errHandler.reportError(this, re);
31758 			_errHandler.recover(this, re);
31759 		}
31760 		finally {
31761 			exitRule();
31762 		}
31763 		return _localctx;
31764 	}
31765 
31766 	public static class SetIndexOptionContext extends ParserRuleContext {
31767 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
31768 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31769 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31770 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31771 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
31772 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
31773 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
31774 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
31775 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
31776 		public ExprContext expr() {
31777 			return getRuleContext(ExprContext.class,0);
31778 		}
31779 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31780 		public SetIndexOptionContext(ParserRuleContext parent, int invokingState) {
31781 			super(parent, invokingState);
31782 		}
31783 		@Override public int getRuleIndex() { return RULE_setIndexOption; }
31784 		@Override
31785 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31786 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetIndexOption(this);
31787 			else return visitor.visitChildren(this);
31788 		}
31789 	}
31790 
31791 	public final SetIndexOptionContext setIndexOption() throws RecognitionException {
31792 		SetIndexOptionContext _localctx = new SetIndexOptionContext(_ctx, getState());
31793 		enterRule(_localctx, 624, RULE_setIndexOption);
31794 		int _la;
31795 		try {
31796 			setState(4481);
31797 			_errHandler.sync(this);
31798 			switch (_input.LA(1)) {
31799 			case ALLOW_ROW_LOCKS:
31800 				enterOuterAlt(_localctx, 1);
31801 				{
31802 				setState(4460);
31803 				match(ALLOW_ROW_LOCKS);
31804 				setState(4461);
31805 				match(EQ_);
31806 				setState(4462);
31807 				_la = _input.LA(1);
31808 				if ( !(_la==ON || _la==OFF) ) {
31809 				_errHandler.recoverInline(this);
31810 				}
31811 				else {
31812 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31813 					_errHandler.reportMatch(this);
31814 					consume();
31815 				}
31816 				}
31817 				break;
31818 			case ALLOW_PAGE_LOCKS:
31819 				enterOuterAlt(_localctx, 2);
31820 				{
31821 				setState(4463);
31822 				match(ALLOW_PAGE_LOCKS);
31823 				setState(4464);
31824 				match(EQ_);
31825 				setState(4465);
31826 				_la = _input.LA(1);
31827 				if ( !(_la==ON || _la==OFF) ) {
31828 				_errHandler.recoverInline(this);
31829 				}
31830 				else {
31831 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31832 					_errHandler.reportMatch(this);
31833 					consume();
31834 				}
31835 				}
31836 				break;
31837 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
31838 				enterOuterAlt(_localctx, 3);
31839 				{
31840 				setState(4466);
31841 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
31842 				setState(4467);
31843 				match(EQ_);
31844 				setState(4468);
31845 				_la = _input.LA(1);
31846 				if ( !(_la==ON || _la==OFF) ) {
31847 				_errHandler.recoverInline(this);
31848 				}
31849 				else {
31850 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31851 					_errHandler.reportMatch(this);
31852 					consume();
31853 				}
31854 				}
31855 				break;
31856 			case IGNORE_DUP_KEY:
31857 				enterOuterAlt(_localctx, 4);
31858 				{
31859 				setState(4469);
31860 				match(IGNORE_DUP_KEY);
31861 				setState(4470);
31862 				match(EQ_);
31863 				setState(4471);
31864 				_la = _input.LA(1);
31865 				if ( !(_la==ON || _la==OFF) ) {
31866 				_errHandler.recoverInline(this);
31867 				}
31868 				else {
31869 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31870 					_errHandler.reportMatch(this);
31871 					consume();
31872 				}
31873 				}
31874 				break;
31875 			case STATISTICS_NORECOMPUTE:
31876 				enterOuterAlt(_localctx, 5);
31877 				{
31878 				setState(4472);
31879 				match(STATISTICS_NORECOMPUTE);
31880 				setState(4473);
31881 				match(EQ_);
31882 				setState(4474);
31883 				_la = _input.LA(1);
31884 				if ( !(_la==ON || _la==OFF) ) {
31885 				_errHandler.recoverInline(this);
31886 				}
31887 				else {
31888 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31889 					_errHandler.reportMatch(this);
31890 					consume();
31891 				}
31892 				}
31893 				break;
31894 			case COMPRESSION_DELAY:
31895 				enterOuterAlt(_localctx, 6);
31896 				{
31897 				setState(4475);
31898 				match(COMPRESSION_DELAY);
31899 				setState(4476);
31900 				match(EQ_);
31901 				{
31902 				setState(4477);
31903 				expr(0);
31904 				setState(4479);
31905 				_errHandler.sync(this);
31906 				_la = _input.LA(1);
31907 				if (_la==MINUTES) {
31908 					{
31909 					setState(4478);
31910 					match(MINUTES);
31911 					}
31912 				}
31913 
31914 				}
31915 				}
31916 				break;
31917 			default:
31918 				throw new NoViableAltException(this);
31919 			}
31920 		}
31921 		catch (RecognitionException re) {
31922 			_localctx.exception = re;
31923 			_errHandler.reportError(this, re);
31924 			_errHandler.recover(this, re);
31925 		}
31926 		finally {
31927 			exitRule();
31928 		}
31929 		return _localctx;
31930 	}
31931 
31932 	public static class ResumableIndexOptionsContext extends ParserRuleContext {
31933 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
31934 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31935 		public ExprContext expr() {
31936 			return getRuleContext(ExprContext.class,0);
31937 		}
31938 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
31939 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31940 		public LowPriorityLockWaitContext lowPriorityLockWait() {
31941 			return getRuleContext(LowPriorityLockWaitContext.class,0);
31942 		}
31943 		public ResumableIndexOptionsContext(ParserRuleContext parent, int invokingState) {
31944 			super(parent, invokingState);
31945 		}
31946 		@Override public int getRuleIndex() { return RULE_resumableIndexOptions; }
31947 		@Override
31948 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31949 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitResumableIndexOptions(this);
31950 			else return visitor.visitChildren(this);
31951 		}
31952 	}
31953 
31954 	public final ResumableIndexOptionsContext resumableIndexOptions() throws RecognitionException {
31955 		ResumableIndexOptionsContext _localctx = new ResumableIndexOptionsContext(_ctx, getState());
31956 		enterRule(_localctx, 626, RULE_resumableIndexOptions);
31957 		int _la;
31958 		try {
31959 			setState(4493);
31960 			_errHandler.sync(this);
31961 			switch (_input.LA(1)) {
31962 			case MAXDOP:
31963 				enterOuterAlt(_localctx, 1);
31964 				{
31965 				setState(4483);
31966 				match(MAXDOP);
31967 				setState(4484);
31968 				match(EQ_);
31969 				setState(4485);
31970 				expr(0);
31971 				}
31972 				break;
31973 			case MAX_DURATION:
31974 				enterOuterAlt(_localctx, 2);
31975 				{
31976 				setState(4486);
31977 				match(MAX_DURATION);
31978 				setState(4487);
31979 				match(EQ_);
31980 				setState(4488);
31981 				expr(0);
31982 				setState(4490);
31983 				_errHandler.sync(this);
31984 				_la = _input.LA(1);
31985 				if (_la==MINUTES) {
31986 					{
31987 					setState(4489);
31988 					match(MINUTES);
31989 					}
31990 				}
31991 
31992 				}
31993 				break;
31994 			case WAIT_AT_LOW_PRIORITY:
31995 				enterOuterAlt(_localctx, 3);
31996 				{
31997 				setState(4492);
31998 				lowPriorityLockWait();
31999 				}
32000 				break;
32001 			default:
32002 				throw new NoViableAltException(this);
32003 			}
32004 		}
32005 		catch (RecognitionException re) {
32006 			_localctx.exception = re;
32007 			_errHandler.reportError(this, re);
32008 			_errHandler.recover(this, re);
32009 		}
32010 		finally {
32011 			exitRule();
32012 		}
32013 		return _localctx;
32014 	}
32015 
32016 	public static class AlterDatabaseClauseContext extends ParserRuleContext {
32017 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
32018 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
32019 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32020 		public DatabaseNameContext databaseName() {
32021 			return getRuleContext(DatabaseNameContext.class,0);
32022 		}
32023 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
32024 		public IgnoredIdentifierContext ignoredIdentifier() {
32025 			return getRuleContext(IgnoredIdentifierContext.class,0);
32026 		}
32027 		public FileAndFilegroupOptionsContext fileAndFilegroupOptions() {
32028 			return getRuleContext(FileAndFilegroupOptionsContext.class,0);
32029 		}
32030 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
32031 		public List<AlterDatabaseOptionSpecContext> alterDatabaseOptionSpec() {
32032 			return getRuleContexts(AlterDatabaseOptionSpecContext.class);
32033 		}
32034 		public AlterDatabaseOptionSpecContext alterDatabaseOptionSpec(int i) {
32035 			return getRuleContext(AlterDatabaseOptionSpecContext.class,i);
32036 		}
32037 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32038 		public TerminalNode COMMA_(int i) {
32039 			return getToken(SQLServerStatementParser.COMMA_, i);
32040 		}
32041 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
32042 		public TerminationContext termination() {
32043 			return getRuleContext(TerminationContext.class,0);
32044 		}
32045 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32046 		public List<EditionOptionsContext> editionOptions() {
32047 			return getRuleContexts(EditionOptionsContext.class);
32048 		}
32049 		public EditionOptionsContext editionOptions(int i) {
32050 			return getRuleContext(EditionOptionsContext.class,i);
32051 		}
32052 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32053 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
32054 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32055 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
32056 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
32057 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32058 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
32059 		public List<AddSecondaryOptionContext> addSecondaryOption() {
32060 			return getRuleContexts(AddSecondaryOptionContext.class);
32061 		}
32062 		public AddSecondaryOptionContext addSecondaryOption(int i) {
32063 			return getRuleContext(AddSecondaryOptionContext.class,i);
32064 		}
32065 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
32066 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
32067 		public AlterDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
32068 			super(parent, invokingState);
32069 		}
32070 		@Override public int getRuleIndex() { return RULE_alterDatabaseClause; }
32071 		@Override
32072 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32073 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseClause(this);
32074 			else return visitor.visitChildren(this);
32075 		}
32076 	}
32077 
32078 	public final AlterDatabaseClauseContext alterDatabaseClause() throws RecognitionException {
32079 		AlterDatabaseClauseContext _localctx = new AlterDatabaseClauseContext(_ctx, getState());
32080 		enterRule(_localctx, 628, RULE_alterDatabaseClause);
32081 		int _la;
32082 		try {
32083 			setState(4549);
32084 			_errHandler.sync(this);
32085 			switch ( getInterpreter().adaptivePredict(_input,491,_ctx) ) {
32086 			case 1:
32087 				enterOuterAlt(_localctx, 1);
32088 				{
32089 				setState(4495);
32090 				match(MODIFY);
32091 				setState(4496);
32092 				match(NAME);
32093 				setState(4497);
32094 				match(EQ_);
32095 				setState(4498);
32096 				databaseName();
32097 				}
32098 				break;
32099 			case 2:
32100 				enterOuterAlt(_localctx, 2);
32101 				{
32102 				setState(4499);
32103 				match(COLLATE);
32104 				setState(4500);
32105 				ignoredIdentifier();
32106 				}
32107 				break;
32108 			case 3:
32109 				enterOuterAlt(_localctx, 3);
32110 				{
32111 				setState(4501);
32112 				fileAndFilegroupOptions();
32113 				}
32114 				break;
32115 			case 4:
32116 				enterOuterAlt(_localctx, 4);
32117 				{
32118 				setState(4502);
32119 				match(SET);
32120 				setState(4503);
32121 				alterDatabaseOptionSpec();
32122 				setState(4508);
32123 				_errHandler.sync(this);
32124 				_la = _input.LA(1);
32125 				while (_la==COMMA_) {
32126 					{
32127 					{
32128 					setState(4504);
32129 					match(COMMA_);
32130 					setState(4505);
32131 					alterDatabaseOptionSpec();
32132 					}
32133 					}
32134 					setState(4510);
32135 					_errHandler.sync(this);
32136 					_la = _input.LA(1);
32137 				}
32138 				setState(4513);
32139 				_errHandler.sync(this);
32140 				_la = _input.LA(1);
32141 				if (_la==WITH) {
32142 					{
32143 					setState(4511);
32144 					match(WITH);
32145 					setState(4512);
32146 					termination();
32147 					}
32148 				}
32149 
32150 				}
32151 				break;
32152 			case 5:
32153 				enterOuterAlt(_localctx, 5);
32154 				{
32155 				setState(4515);
32156 				match(MODIFY);
32157 				setState(4516);
32158 				match(LP_);
32159 				setState(4517);
32160 				editionOptions();
32161 				setState(4522);
32162 				_errHandler.sync(this);
32163 				_la = _input.LA(1);
32164 				while (_la==COMMA_) {
32165 					{
32166 					{
32167 					setState(4518);
32168 					match(COMMA_);
32169 					setState(4519);
32170 					editionOptions();
32171 					}
32172 					}
32173 					setState(4524);
32174 					_errHandler.sync(this);
32175 					_la = _input.LA(1);
32176 				}
32177 				setState(4525);
32178 				match(RP_);
32179 				}
32180 				break;
32181 			case 6:
32182 				enterOuterAlt(_localctx, 6);
32183 				{
32184 				setState(4527);
32185 				match(MODIFY);
32186 				setState(4528);
32187 				match(BACKUP_STORAGE_REDUNDANCY);
32188 				setState(4529);
32189 				match(EQ_);
32190 				setState(4530);
32191 				match(STRING_);
32192 				}
32193 				break;
32194 			case 7:
32195 				enterOuterAlt(_localctx, 7);
32196 				{
32197 				setState(4531);
32198 				match(ADD);
32199 				setState(4532);
32200 				match(SECONDARY);
32201 				setState(4533);
32202 				match(ON);
32203 				setState(4534);
32204 				match(SERVER);
32205 				setState(4535);
32206 				ignoredIdentifier();
32207 				setState(4545);
32208 				_errHandler.sync(this);
32209 				_la = _input.LA(1);
32210 				if (_la==WITH) {
32211 					{
32212 					setState(4536);
32213 					match(WITH);
32214 					setState(4537);
32215 					addSecondaryOption();
32216 					setState(4542);
32217 					_errHandler.sync(this);
32218 					_la = _input.LA(1);
32219 					while (_la==COMMA_) {
32220 						{
32221 						{
32222 						setState(4538);
32223 						match(COMMA_);
32224 						setState(4539);
32225 						addSecondaryOption();
32226 						}
32227 						}
32228 						setState(4544);
32229 						_errHandler.sync(this);
32230 						_la = _input.LA(1);
32231 					}
32232 					}
32233 				}
32234 
32235 				}
32236 				break;
32237 			case 8:
32238 				enterOuterAlt(_localctx, 8);
32239 				{
32240 				setState(4547);
32241 				match(FAILOVER);
32242 				}
32243 				break;
32244 			case 9:
32245 				enterOuterAlt(_localctx, 9);
32246 				{
32247 				setState(4548);
32248 				match(FORCE_FAILOVER_ALLOW_DATA_LOSS);
32249 				}
32250 				break;
32251 			}
32252 		}
32253 		catch (RecognitionException re) {
32254 			_localctx.exception = re;
32255 			_errHandler.reportError(this, re);
32256 			_errHandler.recover(this, re);
32257 		}
32258 		finally {
32259 			exitRule();
32260 		}
32261 		return _localctx;
32262 	}
32263 
32264 	public static class AddSecondaryOptionContext extends ParserRuleContext {
32265 		public Token SECONDARY_TYPE;
32266 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
32267 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
32268 		public TerminalNode EQ_(int i) {
32269 			return getToken(SQLServerStatementParser.EQ_, i);
32270 		}
32271 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
32272 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
32273 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
32274 		public ServiceObjectiveContext serviceObjective() {
32275 			return getRuleContext(ServiceObjectiveContext.class,0);
32276 		}
32277 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
32278 		public DatabaseNameContext databaseName() {
32279 			return getRuleContext(DatabaseNameContext.class,0);
32280 		}
32281 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
32282 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
32283 		public AddSecondaryOptionContext(ParserRuleContext parent, int invokingState) {
32284 			super(parent, invokingState);
32285 		}
32286 		@Override public int getRuleIndex() { return RULE_addSecondaryOption; }
32287 		@Override
32288 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32289 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddSecondaryOption(this);
32290 			else return visitor.visitChildren(this);
32291 		}
32292 	}
32293 
32294 	public final AddSecondaryOptionContext addSecondaryOption() throws RecognitionException {
32295 		AddSecondaryOptionContext _localctx = new AddSecondaryOptionContext(_ctx, getState());
32296 		enterRule(_localctx, 630, RULE_addSecondaryOption);
32297 		int _la;
32298 		try {
32299 			setState(4563);
32300 			_errHandler.sync(this);
32301 			switch (_input.LA(1)) {
32302 			case ALLOW_CONNECTIONS:
32303 				enterOuterAlt(_localctx, 1);
32304 				{
32305 				setState(4551);
32306 				match(ALLOW_CONNECTIONS);
32307 				setState(4552);
32308 				match(EQ_);
32309 				setState(4553);
32310 				_la = _input.LA(1);
32311 				if ( !(_la==ALL || _la==NO) ) {
32312 				_errHandler.recoverInline(this);
32313 				}
32314 				else {
32315 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32316 					_errHandler.reportMatch(this);
32317 					consume();
32318 				}
32319 				}
32320 				break;
32321 			case SERVICE_OBJECTIVE:
32322 				enterOuterAlt(_localctx, 2);
32323 				{
32324 				setState(4554);
32325 				match(SERVICE_OBJECTIVE);
32326 				setState(4555);
32327 				match(EQ_);
32328 				setState(4561);
32329 				_errHandler.sync(this);
32330 				switch (_input.LA(1)) {
32331 				case ELASTIC_POOL:
32332 				case STRING_:
32333 					{
32334 					setState(4556);
32335 					serviceObjective();
32336 					}
32337 					break;
32338 				case DATABASE_NAME:
32339 					{
32340 					setState(4557);
32341 					match(DATABASE_NAME);
32342 					setState(4558);
32343 					match(EQ_);
32344 					setState(4559);
32345 					databaseName();
32346 					}
32347 					break;
32348 				case GEO:
32349 				case NAMED:
32350 					{
32351 					setState(4560);
32352 					((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = _input.LT(1);
32353 					_la = _input.LA(1);
32354 					if ( !(_la==GEO || _la==NAMED) ) {
32355 						((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = (Token)_errHandler.recoverInline(this);
32356 					}
32357 					else {
32358 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32359 						_errHandler.reportMatch(this);
32360 						consume();
32361 					}
32362 					}
32363 					break;
32364 				default:
32365 					throw new NoViableAltException(this);
32366 				}
32367 				}
32368 				break;
32369 			default:
32370 				throw new NoViableAltException(this);
32371 			}
32372 		}
32373 		catch (RecognitionException re) {
32374 			_localctx.exception = re;
32375 			_errHandler.reportError(this, re);
32376 			_errHandler.recover(this, re);
32377 		}
32378 		finally {
32379 			exitRule();
32380 		}
32381 		return _localctx;
32382 	}
32383 
32384 	public static class EditionOptionsContext extends ParserRuleContext {
32385 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
32386 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32387 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32388 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
32389 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
32390 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
32391 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32392 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
32393 		public ServiceObjectiveContext serviceObjective() {
32394 			return getRuleContext(ServiceObjectiveContext.class,0);
32395 		}
32396 		public EditionOptionsContext(ParserRuleContext parent, int invokingState) {
32397 			super(parent, invokingState);
32398 		}
32399 		@Override public int getRuleIndex() { return RULE_editionOptions; }
32400 		@Override
32401 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32402 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEditionOptions(this);
32403 			else return visitor.visitChildren(this);
32404 		}
32405 	}
32406 
32407 	public final EditionOptionsContext editionOptions() throws RecognitionException {
32408 		EditionOptionsContext _localctx = new EditionOptionsContext(_ctx, getState());
32409 		enterRule(_localctx, 632, RULE_editionOptions);
32410 		int _la;
32411 		try {
32412 			setState(4578);
32413 			_errHandler.sync(this);
32414 			switch (_input.LA(1)) {
32415 			case MAXSIZE:
32416 				enterOuterAlt(_localctx, 1);
32417 				{
32418 				setState(4565);
32419 				match(MAXSIZE);
32420 				setState(4566);
32421 				match(EQ_);
32422 				setState(4567);
32423 				match(NUMBER_);
32424 				setState(4568);
32425 				_la = _input.LA(1);
32426 				if ( !(_la==MB || _la==GB) ) {
32427 				_errHandler.recoverInline(this);
32428 				}
32429 				else {
32430 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32431 					_errHandler.reportMatch(this);
32432 					consume();
32433 				}
32434 				}
32435 				break;
32436 			case EDITION:
32437 				enterOuterAlt(_localctx, 2);
32438 				{
32439 				setState(4569);
32440 				match(EDITION);
32441 				setState(4570);
32442 				match(EQ_);
32443 				setState(4571);
32444 				match(STRING_);
32445 				}
32446 				break;
32447 			case SERVICE_OBJECTIVE:
32448 				enterOuterAlt(_localctx, 3);
32449 				{
32450 				setState(4572);
32451 				match(SERVICE_OBJECTIVE);
32452 				setState(4573);
32453 				match(EQ_);
32454 				setState(4576);
32455 				_errHandler.sync(this);
32456 				switch ( getInterpreter().adaptivePredict(_input,494,_ctx) ) {
32457 				case 1:
32458 					{
32459 					setState(4574);
32460 					match(STRING_);
32461 					}
32462 					break;
32463 				case 2:
32464 					{
32465 					setState(4575);
32466 					serviceObjective();
32467 					}
32468 					break;
32469 				}
32470 				}
32471 				break;
32472 			default:
32473 				throw new NoViableAltException(this);
32474 			}
32475 		}
32476 		catch (RecognitionException re) {
32477 			_localctx.exception = re;
32478 			_errHandler.reportError(this, re);
32479 			_errHandler.recover(this, re);
32480 		}
32481 		finally {
32482 			exitRule();
32483 		}
32484 		return _localctx;
32485 	}
32486 
32487 	public static class ServiceObjectiveContext extends ParserRuleContext {
32488 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32489 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
32490 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32491 		public IgnoredIdentifierContext ignoredIdentifier() {
32492 			return getRuleContext(IgnoredIdentifierContext.class,0);
32493 		}
32494 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32495 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32496 		public ServiceObjectiveContext(ParserRuleContext parent, int invokingState) {
32497 			super(parent, invokingState);
32498 		}
32499 		@Override public int getRuleIndex() { return RULE_serviceObjective; }
32500 		@Override
32501 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32502 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceObjective(this);
32503 			else return visitor.visitChildren(this);
32504 		}
32505 	}
32506 
32507 	public final ServiceObjectiveContext serviceObjective() throws RecognitionException {
32508 		ServiceObjectiveContext _localctx = new ServiceObjectiveContext(_ctx, getState());
32509 		enterRule(_localctx, 634, RULE_serviceObjective);
32510 		try {
32511 			setState(4588);
32512 			_errHandler.sync(this);
32513 			switch (_input.LA(1)) {
32514 			case STRING_:
32515 				enterOuterAlt(_localctx, 1);
32516 				{
32517 				setState(4580);
32518 				match(STRING_);
32519 				}
32520 				break;
32521 			case ELASTIC_POOL:
32522 				enterOuterAlt(_localctx, 2);
32523 				{
32524 				setState(4581);
32525 				match(ELASTIC_POOL);
32526 				setState(4582);
32527 				match(LP_);
32528 				setState(4583);
32529 				ignoredIdentifier();
32530 				setState(4584);
32531 				match(EQ_);
32532 				setState(4585);
32533 				match(STRING_);
32534 				setState(4586);
32535 				match(RP_);
32536 				}
32537 				break;
32538 			default:
32539 				throw new NoViableAltException(this);
32540 			}
32541 		}
32542 		catch (RecognitionException re) {
32543 			_localctx.exception = re;
32544 			_errHandler.reportError(this, re);
32545 			_errHandler.recover(this, re);
32546 		}
32547 		finally {
32548 			exitRule();
32549 		}
32550 		return _localctx;
32551 	}
32552 
32553 	public static class AlterDatabaseOptionSpecContext extends ParserRuleContext {
32554 		public AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() {
32555 			return getRuleContext(AcceleratedDatabaseRecoveryContext.class,0);
32556 		}
32557 		public AutoOptionContext autoOption() {
32558 			return getRuleContext(AutoOptionContext.class,0);
32559 		}
32560 		public AutomaticTuningOptionContext automaticTuningOption() {
32561 			return getRuleContext(AutomaticTuningOptionContext.class,0);
32562 		}
32563 		public ChangeTrackingOptionContext changeTrackingOption() {
32564 			return getRuleContext(ChangeTrackingOptionContext.class,0);
32565 		}
32566 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
32567 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32568 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
32569 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
32570 		public CursorOptionContext cursorOption() {
32571 			return getRuleContext(CursorOptionContext.class,0);
32572 		}
32573 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
32574 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32575 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32576 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
32577 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
32578 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
32579 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
32580 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
32581 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
32582 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
32583 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
32584 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
32585 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
32586 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
32587 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
32588 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
32589 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
32590 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
32591 		public ExternalAccessOptionContext externalAccessOption() {
32592 			return getRuleContext(ExternalAccessOptionContext.class,0);
32593 		}
32594 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
32595 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32596 		public FileStreamOptionContext fileStreamOption() {
32597 			return getRuleContext(FileStreamOptionContext.class,0);
32598 		}
32599 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32600 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
32601 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
32602 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
32603 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
32604 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
32605 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
32606 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
32607 		public QueryStoreOptionsContext queryStoreOptions() {
32608 			return getRuleContext(QueryStoreOptionsContext.class,0);
32609 		}
32610 		public RecoveryOptionContext recoveryOption() {
32611 			return getRuleContext(RecoveryOptionContext.class,0);
32612 		}
32613 		public ServiceBrokerOptionContext serviceBrokerOption() {
32614 			return getRuleContext(ServiceBrokerOptionContext.class,0);
32615 		}
32616 		public SnapshotOptionContext snapshotOption() {
32617 			return getRuleContext(SnapshotOptionContext.class,0);
32618 		}
32619 		public SqlOptionContext sqlOption() {
32620 			return getRuleContext(SqlOptionContext.class,0);
32621 		}
32622 		public TargetRecoveryTimeOptionContext targetRecoveryTimeOption() {
32623 			return getRuleContext(TargetRecoveryTimeOptionContext.class,0);
32624 		}
32625 		public TerminationContext termination() {
32626 			return getRuleContext(TerminationContext.class,0);
32627 		}
32628 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
32629 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
32630 		public AlterDatabaseOptionSpecContext(ParserRuleContext parent, int invokingState) {
32631 			super(parent, invokingState);
32632 		}
32633 		@Override public int getRuleIndex() { return RULE_alterDatabaseOptionSpec; }
32634 		@Override
32635 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32636 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseOptionSpec(this);
32637 			else return visitor.visitChildren(this);
32638 		}
32639 	}
32640 
32641 	public final AlterDatabaseOptionSpecContext alterDatabaseOptionSpec() throws RecognitionException {
32642 		AlterDatabaseOptionSpecContext _localctx = new AlterDatabaseOptionSpecContext(_ctx, getState());
32643 		enterRule(_localctx, 636, RULE_alterDatabaseOptionSpec);
32644 		int _la;
32645 		try {
32646 			setState(4633);
32647 			_errHandler.sync(this);
32648 			switch (_input.LA(1)) {
32649 			case ACCELERATED_DATABASE_RECOVERY:
32650 				enterOuterAlt(_localctx, 1);
32651 				{
32652 				setState(4590);
32653 				acceleratedDatabaseRecovery();
32654 				}
32655 				break;
32656 			case AUTO_UPDATE_STATISTICS_ASYNC:
32657 			case AUTO_UPDATE_STATISTICS:
32658 			case AUTO_SHRINK:
32659 			case AUTO_CREATE_STATISTICS:
32660 			case AUTO_CLOSE:
32661 				enterOuterAlt(_localctx, 2);
32662 				{
32663 				setState(4591);
32664 				autoOption();
32665 				}
32666 				break;
32667 			case AUTOMATIC_TUNING:
32668 				enterOuterAlt(_localctx, 3);
32669 				{
32670 				setState(4592);
32671 				automaticTuningOption();
32672 				}
32673 				break;
32674 			case CHANGE_TRACKING:
32675 				enterOuterAlt(_localctx, 4);
32676 				{
32677 				setState(4593);
32678 				changeTrackingOption();
32679 				}
32680 				break;
32681 			case CONTAINMENT:
32682 				enterOuterAlt(_localctx, 5);
32683 				{
32684 				setState(4594);
32685 				match(CONTAINMENT);
32686 				setState(4595);
32687 				match(EQ_);
32688 				setState(4596);
32689 				_la = _input.LA(1);
32690 				if ( !(_la==NONE || _la==PARTIAL) ) {
32691 				_errHandler.recoverInline(this);
32692 				}
32693 				else {
32694 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32695 					_errHandler.reportMatch(this);
32696 					consume();
32697 				}
32698 				}
32699 				break;
32700 			case CURSOR_DEFAULT:
32701 			case CURSOR_CLOSE_ON_COMMIT:
32702 				enterOuterAlt(_localctx, 6);
32703 				{
32704 				setState(4597);
32705 				cursorOption();
32706 				}
32707 				break;
32708 			case DATE_CORRELATION_OPTIMIZATION:
32709 				enterOuterAlt(_localctx, 7);
32710 				{
32711 				setState(4598);
32712 				match(DATE_CORRELATION_OPTIMIZATION);
32713 				setState(4599);
32714 				_la = _input.LA(1);
32715 				if ( !(_la==ON || _la==OFF) ) {
32716 				_errHandler.recoverInline(this);
32717 				}
32718 				else {
32719 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32720 					_errHandler.reportMatch(this);
32721 					consume();
32722 				}
32723 				}
32724 				break;
32725 			case ENCRYPTION:
32726 				enterOuterAlt(_localctx, 8);
32727 				{
32728 				setState(4600);
32729 				match(ENCRYPTION);
32730 				setState(4601);
32731 				_la = _input.LA(1);
32732 				if ( !(_la==ON || _la==OFF || _la==RESUME || _la==SUSPEND) ) {
32733 				_errHandler.recoverInline(this);
32734 				}
32735 				else {
32736 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32737 					_errHandler.reportMatch(this);
32738 					consume();
32739 				}
32740 				}
32741 				break;
32742 			case ONLINE:
32743 			case OFFLINE:
32744 			case EMERGENCY:
32745 				enterOuterAlt(_localctx, 9);
32746 				{
32747 				setState(4602);
32748 				_la = _input.LA(1);
32749 				if ( !(_la==ONLINE || _la==OFFLINE || _la==EMERGENCY) ) {
32750 				_errHandler.recoverInline(this);
32751 				}
32752 				else {
32753 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32754 					_errHandler.reportMatch(this);
32755 					consume();
32756 				}
32757 				}
32758 				break;
32759 			case READ_ONLY:
32760 			case READ_WRITE:
32761 				enterOuterAlt(_localctx, 10);
32762 				{
32763 				setState(4603);
32764 				_la = _input.LA(1);
32765 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
32766 				_errHandler.recoverInline(this);
32767 				}
32768 				else {
32769 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32770 					_errHandler.reportMatch(this);
32771 					consume();
32772 				}
32773 				}
32774 				break;
32775 			case MULTI_USER:
32776 			case RESTRICTED_USER:
32777 			case SINGLE_USER:
32778 				enterOuterAlt(_localctx, 11);
32779 				{
32780 				setState(4604);
32781 				_la = _input.LA(1);
32782 				if ( !(((((_la - 638)) & ~0x3f) == 0 && ((1L << (_la - 638)) & ((1L << (MULTI_USER - 638)) | (1L << (RESTRICTED_USER - 638)) | (1L << (SINGLE_USER - 638)))) != 0)) ) {
32783 				_errHandler.recoverInline(this);
32784 				}
32785 				else {
32786 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32787 					_errHandler.reportMatch(this);
32788 					consume();
32789 				}
32790 				}
32791 				break;
32792 			case DELAYED_DURABILITY:
32793 				enterOuterAlt(_localctx, 12);
32794 				{
32795 				setState(4605);
32796 				match(DELAYED_DURABILITY);
32797 				setState(4606);
32798 				match(EQ_);
32799 				setState(4607);
32800 				_la = _input.LA(1);
32801 				if ( !(_la==FORCED || _la==DISABLED || _la==ALLOWED) ) {
32802 				_errHandler.recoverInline(this);
32803 				}
32804 				else {
32805 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32806 					_errHandler.reportMatch(this);
32807 					consume();
32808 				}
32809 				}
32810 				break;
32811 			case DB_CHAINING:
32812 			case TRUSTWORTHY:
32813 			case DEFAULT_FULLTEXT_LANGUAGE:
32814 			case DEFAULT_LANGUAGE:
32815 			case NESTED_TRIGGERS:
32816 			case TRANSFORM_NOISE_WORDS:
32817 			case TWO_DIGIT_YEAR_CUTOFF:
32818 				enterOuterAlt(_localctx, 13);
32819 				{
32820 				setState(4608);
32821 				externalAccessOption();
32822 				}
32823 				break;
32824 			case FILESTREAM:
32825 				enterOuterAlt(_localctx, 14);
32826 				{
32827 				setState(4609);
32828 				match(FILESTREAM);
32829 				setState(4610);
32830 				match(LP_);
32831 				setState(4611);
32832 				fileStreamOption();
32833 				setState(4612);
32834 				match(RP_);
32835 				}
32836 				break;
32837 			case ALTER:
32838 				enterOuterAlt(_localctx, 15);
32839 				{
32840 				setState(4614);
32841 				match(ALTER);
32842 				setState(4615);
32843 				match(DATABASE);
32844 				setState(4616);
32845 				match(SET);
32846 				setState(4617);
32847 				match(HADR);
32848 				}
32849 				break;
32850 			case MIXED_PAGE_ALLOCATION:
32851 				enterOuterAlt(_localctx, 16);
32852 				{
32853 				setState(4618);
32854 				match(MIXED_PAGE_ALLOCATION);
32855 				setState(4619);
32856 				_la = _input.LA(1);
32857 				if ( !(_la==ON || _la==OFF) ) {
32858 				_errHandler.recoverInline(this);
32859 				}
32860 				else {
32861 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32862 					_errHandler.reportMatch(this);
32863 					consume();
32864 				}
32865 				}
32866 				break;
32867 			case PARAMETERIZATION:
32868 				enterOuterAlt(_localctx, 17);
32869 				{
32870 				setState(4620);
32871 				match(PARAMETERIZATION);
32872 				setState(4621);
32873 				_la = _input.LA(1);
32874 				if ( !(_la==SIMPLE || _la==FORCED) ) {
32875 				_errHandler.recoverInline(this);
32876 				}
32877 				else {
32878 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32879 					_errHandler.reportMatch(this);
32880 					consume();
32881 				}
32882 				}
32883 				break;
32884 			case QUERY_STORE:
32885 				enterOuterAlt(_localctx, 18);
32886 				{
32887 				setState(4622);
32888 				queryStoreOptions();
32889 				}
32890 				break;
32891 			case PAGE_VERIFY:
32892 			case TORN_PAGE_DETECTION:
32893 			case RECOVERY:
32894 				enterOuterAlt(_localctx, 19);
32895 				{
32896 				setState(4623);
32897 				recoveryOption();
32898 				}
32899 				break;
32900 			case HONOR_BROKER_PRIORITY:
32901 			case ERROR_BROKER_CONVERSATIONS:
32902 			case NEW_BROKER:
32903 			case DISABLE_BROKER:
32904 			case ENABLE_BROKER:
32905 				enterOuterAlt(_localctx, 20);
32906 				{
32907 				setState(4624);
32908 				serviceBrokerOption();
32909 				}
32910 				break;
32911 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
32912 			case READ_COMMITTED_SNAPSHOT:
32913 			case ALLOW_SNAPSHOT_ISOLATION:
32914 				enterOuterAlt(_localctx, 21);
32915 				{
32916 				setState(4625);
32917 				snapshotOption();
32918 				}
32919 				break;
32920 			case RECURSIVE_TRIGGERS:
32921 			case QUOTED_IDENTIFIER:
32922 			case NUMERIC_ROUNDABORT:
32923 			case CONCAT_NULL_YIELDS_NULL:
32924 			case COMPATIBILITY_LEVEL:
32925 			case ARITHABORT:
32926 			case ANSI_WARNINGS:
32927 			case ANSI_PADDING:
32928 			case ANSI_NULLS:
32929 			case ANSI_NULL_DEFAULT:
32930 				enterOuterAlt(_localctx, 22);
32931 				{
32932 				setState(4626);
32933 				sqlOption();
32934 				}
32935 				break;
32936 			case TARGET_RECOVERY_TIME:
32937 				enterOuterAlt(_localctx, 23);
32938 				{
32939 				setState(4627);
32940 				targetRecoveryTimeOption();
32941 				}
32942 				break;
32943 			case ROLLBACK:
32944 			case NO_WAIT:
32945 				enterOuterAlt(_localctx, 24);
32946 				{
32947 				setState(4628);
32948 				termination();
32949 				}
32950 				break;
32951 			case TEMPORAL_HISTORY_RETENTION:
32952 				enterOuterAlt(_localctx, 25);
32953 				{
32954 				setState(4629);
32955 				match(TEMPORAL_HISTORY_RETENTION);
32956 				setState(4630);
32957 				_la = _input.LA(1);
32958 				if ( !(_la==ON || _la==OFF) ) {
32959 				_errHandler.recoverInline(this);
32960 				}
32961 				else {
32962 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32963 					_errHandler.reportMatch(this);
32964 					consume();
32965 				}
32966 				}
32967 				break;
32968 			case DATA_RETENTION:
32969 				enterOuterAlt(_localctx, 26);
32970 				{
32971 				setState(4631);
32972 				match(DATA_RETENTION);
32973 				setState(4632);
32974 				_la = _input.LA(1);
32975 				if ( !(_la==ON || _la==OFF) ) {
32976 				_errHandler.recoverInline(this);
32977 				}
32978 				else {
32979 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32980 					_errHandler.reportMatch(this);
32981 					consume();
32982 				}
32983 				}
32984 				break;
32985 			default:
32986 				throw new NoViableAltException(this);
32987 			}
32988 		}
32989 		catch (RecognitionException re) {
32990 			_localctx.exception = re;
32991 			_errHandler.reportError(this, re);
32992 			_errHandler.recover(this, re);
32993 		}
32994 		finally {
32995 			exitRule();
32996 		}
32997 		return _localctx;
32998 	}
32999 
33000 	public static class FileAndFilegroupOptionsContext extends ParserRuleContext {
33001 		public AddOrModifyFilesContext addOrModifyFiles() {
33002 			return getRuleContext(AddOrModifyFilesContext.class,0);
33003 		}
33004 		public FileSpecContext fileSpec() {
33005 			return getRuleContext(FileSpecContext.class,0);
33006 		}
33007 		public AddOrModifyFilegroupsContext addOrModifyFilegroups() {
33008 			return getRuleContext(AddOrModifyFilegroupsContext.class,0);
33009 		}
33010 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
33011 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
33012 		}
33013 		public FileAndFilegroupOptionsContext(ParserRuleContext parent, int invokingState) {
33014 			super(parent, invokingState);
33015 		}
33016 		@Override public int getRuleIndex() { return RULE_fileAndFilegroupOptions; }
33017 		@Override
33018 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33019 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileAndFilegroupOptions(this);
33020 			else return visitor.visitChildren(this);
33021 		}
33022 	}
33023 
33024 	public final FileAndFilegroupOptionsContext fileAndFilegroupOptions() throws RecognitionException {
33025 		FileAndFilegroupOptionsContext _localctx = new FileAndFilegroupOptionsContext(_ctx, getState());
33026 		enterRule(_localctx, 638, RULE_fileAndFilegroupOptions);
33027 		try {
33028 			setState(4639);
33029 			_errHandler.sync(this);
33030 			switch ( getInterpreter().adaptivePredict(_input,498,_ctx) ) {
33031 			case 1:
33032 				enterOuterAlt(_localctx, 1);
33033 				{
33034 				setState(4635);
33035 				addOrModifyFiles();
33036 				}
33037 				break;
33038 			case 2:
33039 				enterOuterAlt(_localctx, 2);
33040 				{
33041 				setState(4636);
33042 				fileSpec();
33043 				}
33044 				break;
33045 			case 3:
33046 				enterOuterAlt(_localctx, 3);
33047 				{
33048 				setState(4637);
33049 				addOrModifyFilegroups();
33050 				}
33051 				break;
33052 			case 4:
33053 				enterOuterAlt(_localctx, 4);
33054 				{
33055 				setState(4638);
33056 				filegroupUpdatabilityOption();
33057 				}
33058 				break;
33059 			}
33060 		}
33061 		catch (RecognitionException re) {
33062 			_localctx.exception = re;
33063 			_errHandler.reportError(this, re);
33064 			_errHandler.recover(this, re);
33065 		}
33066 		finally {
33067 			exitRule();
33068 		}
33069 		return _localctx;
33070 	}
33071 
33072 	public static class AddOrModifyFilegroupsContext extends ParserRuleContext {
33073 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
33074 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
33075 		public IgnoredIdentifierContext ignoredIdentifier() {
33076 			return getRuleContext(IgnoredIdentifierContext.class,0);
33077 		}
33078 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
33079 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
33080 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
33081 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
33082 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
33083 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
33084 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
33085 		}
33086 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
33087 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
33088 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33089 		public TerminalNode AUTOGROW_SINGLE_FILE() { return getToken(SQLServerStatementParser.AUTOGROW_SINGLE_FILE, 0); }
33090 		public TerminalNode AUTOGROW_ALL_FILES() { return getToken(SQLServerStatementParser.AUTOGROW_ALL_FILES, 0); }
33091 		public AddOrModifyFilegroupsContext(ParserRuleContext parent, int invokingState) {
33092 			super(parent, invokingState);
33093 		}
33094 		@Override public int getRuleIndex() { return RULE_addOrModifyFilegroups; }
33095 		@Override
33096 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33097 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFilegroups(this);
33098 			else return visitor.visitChildren(this);
33099 		}
33100 	}
33101 
33102 	public final AddOrModifyFilegroupsContext addOrModifyFilegroups() throws RecognitionException {
33103 		AddOrModifyFilegroupsContext _localctx = new AddOrModifyFilegroupsContext(_ctx, getState());
33104 		enterRule(_localctx, 640, RULE_addOrModifyFilegroups);
33105 		int _la;
33106 		try {
33107 			setState(4663);
33108 			_errHandler.sync(this);
33109 			switch (_input.LA(1)) {
33110 			case ADD:
33111 				enterOuterAlt(_localctx, 1);
33112 				{
33113 				setState(4641);
33114 				match(ADD);
33115 				setState(4642);
33116 				match(FILEGROUP);
33117 				setState(4643);
33118 				ignoredIdentifier();
33119 				setState(4648);
33120 				_errHandler.sync(this);
33121 				switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
33122 				case 1:
33123 					{
33124 					setState(4644);
33125 					match(CONTAINS);
33126 					setState(4645);
33127 					match(FILESTREAM);
33128 					}
33129 					break;
33130 				case 2:
33131 					{
33132 					setState(4646);
33133 					match(CONTAINS);
33134 					setState(4647);
33135 					match(MEMORY_OPTIMIZED_DATA);
33136 					}
33137 					break;
33138 				}
33139 				}
33140 				break;
33141 			case REMOVE:
33142 				enterOuterAlt(_localctx, 2);
33143 				{
33144 				setState(4650);
33145 				match(REMOVE);
33146 				setState(4651);
33147 				match(FILEGROUP);
33148 				setState(4652);
33149 				ignoredIdentifier();
33150 				}
33151 				break;
33152 			case MODIFY:
33153 				enterOuterAlt(_localctx, 3);
33154 				{
33155 				setState(4653);
33156 				match(MODIFY);
33157 				setState(4654);
33158 				match(FILEGROUP);
33159 				setState(4655);
33160 				ignoredIdentifier();
33161 				setState(4656);
33162 				filegroupUpdatabilityOption();
33163 				}
33164 				break;
33165 			case DEFAULT:
33166 				enterOuterAlt(_localctx, 4);
33167 				{
33168 				setState(4658);
33169 				match(DEFAULT);
33170 				}
33171 				break;
33172 			case NAME:
33173 				enterOuterAlt(_localctx, 5);
33174 				{
33175 				setState(4659);
33176 				match(NAME);
33177 				setState(4660);
33178 				match(EQ_);
33179 				setState(4661);
33180 				ignoredIdentifier();
33181 				}
33182 				break;
33183 			case AUTOGROW_SINGLE_FILE:
33184 			case AUTOGROW_ALL_FILES:
33185 				enterOuterAlt(_localctx, 6);
33186 				{
33187 				setState(4662);
33188 				_la = _input.LA(1);
33189 				if ( !(_la==AUTOGROW_SINGLE_FILE || _la==AUTOGROW_ALL_FILES) ) {
33190 				_errHandler.recoverInline(this);
33191 				}
33192 				else {
33193 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33194 					_errHandler.reportMatch(this);
33195 					consume();
33196 				}
33197 				}
33198 				break;
33199 			default:
33200 				throw new NoViableAltException(this);
33201 			}
33202 		}
33203 		catch (RecognitionException re) {
33204 			_localctx.exception = re;
33205 			_errHandler.reportError(this, re);
33206 			_errHandler.recover(this, re);
33207 		}
33208 		finally {
33209 			exitRule();
33210 		}
33211 		return _localctx;
33212 	}
33213 
33214 	public static class FilegroupUpdatabilityOptionContext extends ParserRuleContext {
33215 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
33216 		public TerminalNode READWRITE() { return getToken(SQLServerStatementParser.READWRITE, 0); }
33217 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
33218 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
33219 		public FilegroupUpdatabilityOptionContext(ParserRuleContext parent, int invokingState) {
33220 			super(parent, invokingState);
33221 		}
33222 		@Override public int getRuleIndex() { return RULE_filegroupUpdatabilityOption; }
33223 		@Override
33224 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33225 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilegroupUpdatabilityOption(this);
33226 			else return visitor.visitChildren(this);
33227 		}
33228 	}
33229 
33230 	public final FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() throws RecognitionException {
33231 		FilegroupUpdatabilityOptionContext _localctx = new FilegroupUpdatabilityOptionContext(_ctx, getState());
33232 		enterRule(_localctx, 642, RULE_filegroupUpdatabilityOption);
33233 		int _la;
33234 		try {
33235 			setState(4667);
33236 			_errHandler.sync(this);
33237 			switch (_input.LA(1)) {
33238 			case READONLY:
33239 			case READWRITE:
33240 				enterOuterAlt(_localctx, 1);
33241 				{
33242 				setState(4665);
33243 				_la = _input.LA(1);
33244 				if ( !(_la==READONLY || _la==READWRITE) ) {
33245 				_errHandler.recoverInline(this);
33246 				}
33247 				else {
33248 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33249 					_errHandler.reportMatch(this);
33250 					consume();
33251 				}
33252 				}
33253 				break;
33254 			case READ_ONLY:
33255 			case READ_WRITE:
33256 				enterOuterAlt(_localctx, 2);
33257 				{
33258 				setState(4666);
33259 				_la = _input.LA(1);
33260 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
33261 				_errHandler.recoverInline(this);
33262 				}
33263 				else {
33264 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33265 					_errHandler.reportMatch(this);
33266 					consume();
33267 				}
33268 				}
33269 				break;
33270 			default:
33271 				throw new NoViableAltException(this);
33272 			}
33273 		}
33274 		catch (RecognitionException re) {
33275 			_localctx.exception = re;
33276 			_errHandler.reportError(this, re);
33277 			_errHandler.recover(this, re);
33278 		}
33279 		finally {
33280 			exitRule();
33281 		}
33282 		return _localctx;
33283 	}
33284 
33285 	public static class AddOrModifyFilesContext extends ParserRuleContext {
33286 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
33287 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
33288 		public List<FileSpecContext> fileSpec() {
33289 			return getRuleContexts(FileSpecContext.class);
33290 		}
33291 		public FileSpecContext fileSpec(int i) {
33292 			return getRuleContext(FileSpecContext.class,i);
33293 		}
33294 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33295 		public TerminalNode COMMA_(int i) {
33296 			return getToken(SQLServerStatementParser.COMMA_, i);
33297 		}
33298 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
33299 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
33300 		public IgnoredIdentifierContext ignoredIdentifier() {
33301 			return getRuleContext(IgnoredIdentifierContext.class,0);
33302 		}
33303 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
33304 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
33305 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
33306 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
33307 		public AddOrModifyFilesContext(ParserRuleContext parent, int invokingState) {
33308 			super(parent, invokingState);
33309 		}
33310 		@Override public int getRuleIndex() { return RULE_addOrModifyFiles; }
33311 		@Override
33312 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33313 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFiles(this);
33314 			else return visitor.visitChildren(this);
33315 		}
33316 	}
33317 
33318 	public final AddOrModifyFilesContext addOrModifyFiles() throws RecognitionException {
33319 		AddOrModifyFilesContext _localctx = new AddOrModifyFilesContext(_ctx, getState());
33320 		enterRule(_localctx, 644, RULE_addOrModifyFiles);
33321 		int _la;
33322 		try {
33323 			setState(4701);
33324 			_errHandler.sync(this);
33325 			switch ( getInterpreter().adaptivePredict(_input,505,_ctx) ) {
33326 			case 1:
33327 				enterOuterAlt(_localctx, 1);
33328 				{
33329 				setState(4669);
33330 				match(ADD);
33331 				setState(4670);
33332 				match(FILE);
33333 				setState(4671);
33334 				fileSpec();
33335 				setState(4676);
33336 				_errHandler.sync(this);
33337 				_la = _input.LA(1);
33338 				while (_la==COMMA_) {
33339 					{
33340 					{
33341 					setState(4672);
33342 					match(COMMA_);
33343 					setState(4673);
33344 					fileSpec();
33345 					}
33346 					}
33347 					setState(4678);
33348 					_errHandler.sync(this);
33349 					_la = _input.LA(1);
33350 				}
33351 				setState(4682);
33352 				_errHandler.sync(this);
33353 				_la = _input.LA(1);
33354 				if (_la==TO) {
33355 					{
33356 					setState(4679);
33357 					match(TO);
33358 					setState(4680);
33359 					match(FILEGROUP);
33360 					setState(4681);
33361 					ignoredIdentifier();
33362 					}
33363 				}
33364 
33365 				}
33366 				break;
33367 			case 2:
33368 				enterOuterAlt(_localctx, 2);
33369 				{
33370 				setState(4684);
33371 				match(ADD);
33372 				setState(4685);
33373 				match(LOG);
33374 				setState(4686);
33375 				match(FILE);
33376 				setState(4687);
33377 				fileSpec();
33378 				setState(4692);
33379 				_errHandler.sync(this);
33380 				_la = _input.LA(1);
33381 				while (_la==COMMA_) {
33382 					{
33383 					{
33384 					setState(4688);
33385 					match(COMMA_);
33386 					setState(4689);
33387 					fileSpec();
33388 					}
33389 					}
33390 					setState(4694);
33391 					_errHandler.sync(this);
33392 					_la = _input.LA(1);
33393 				}
33394 				}
33395 				break;
33396 			case 3:
33397 				enterOuterAlt(_localctx, 3);
33398 				{
33399 				setState(4695);
33400 				match(REMOVE);
33401 				setState(4696);
33402 				match(FILE);
33403 				setState(4697);
33404 				match(STRING_);
33405 				}
33406 				break;
33407 			case 4:
33408 				enterOuterAlt(_localctx, 4);
33409 				{
33410 				setState(4698);
33411 				match(MODIFY);
33412 				setState(4699);
33413 				match(FILE);
33414 				setState(4700);
33415 				fileSpec();
33416 				}
33417 				break;
33418 			}
33419 		}
33420 		catch (RecognitionException re) {
33421 			_localctx.exception = re;
33422 			_errHandler.reportError(this, re);
33423 			_errHandler.recover(this, re);
33424 		}
33425 		finally {
33426 			exitRule();
33427 		}
33428 		return _localctx;
33429 	}
33430 
33431 	public static class AcceleratedDatabaseRecoveryContext extends ParserRuleContext {
33432 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
33433 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
33434 		public TerminalNode EQ_(int i) {
33435 			return getToken(SQLServerStatementParser.EQ_, i);
33436 		}
33437 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33438 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33439 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33440 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
33441 		public IgnoredIdentifierContext ignoredIdentifier() {
33442 			return getRuleContext(IgnoredIdentifierContext.class,0);
33443 		}
33444 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33445 		public AcceleratedDatabaseRecoveryContext(ParserRuleContext parent, int invokingState) {
33446 			super(parent, invokingState);
33447 		}
33448 		@Override public int getRuleIndex() { return RULE_acceleratedDatabaseRecovery; }
33449 		@Override
33450 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33451 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAcceleratedDatabaseRecovery(this);
33452 			else return visitor.visitChildren(this);
33453 		}
33454 	}
33455 
33456 	public final AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() throws RecognitionException {
33457 		AcceleratedDatabaseRecoveryContext _localctx = new AcceleratedDatabaseRecoveryContext(_ctx, getState());
33458 		enterRule(_localctx, 646, RULE_acceleratedDatabaseRecovery);
33459 		int _la;
33460 		try {
33461 			enterOuterAlt(_localctx, 1);
33462 			{
33463 			setState(4703);
33464 			match(ACCELERATED_DATABASE_RECOVERY);
33465 			setState(4704);
33466 			match(EQ_);
33467 			setState(4705);
33468 			_la = _input.LA(1);
33469 			if ( !(_la==ON || _la==OFF) ) {
33470 			_errHandler.recoverInline(this);
33471 			}
33472 			else {
33473 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33474 				_errHandler.reportMatch(this);
33475 				consume();
33476 			}
33477 			setState(4712);
33478 			_errHandler.sync(this);
33479 			switch ( getInterpreter().adaptivePredict(_input,506,_ctx) ) {
33480 			case 1:
33481 				{
33482 				setState(4706);
33483 				match(LP_);
33484 				setState(4707);
33485 				match(PERSISTENT_VERSION_STORE_FILEGROUP);
33486 				setState(4708);
33487 				match(EQ_);
33488 				setState(4709);
33489 				ignoredIdentifier();
33490 				setState(4710);
33491 				match(RP_);
33492 				}
33493 				break;
33494 			}
33495 			}
33496 		}
33497 		catch (RecognitionException re) {
33498 			_localctx.exception = re;
33499 			_errHandler.reportError(this, re);
33500 			_errHandler.recover(this, re);
33501 		}
33502 		finally {
33503 			exitRule();
33504 		}
33505 		return _localctx;
33506 	}
33507 
33508 	public static class AutoOptionContext extends ParserRuleContext {
33509 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
33510 		public List<TerminalNode> ON() { return getTokens(SQLServerStatementParser.ON); }
33511 		public TerminalNode ON(int i) {
33512 			return getToken(SQLServerStatementParser.ON, i);
33513 		}
33514 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33515 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
33516 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33517 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
33518 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33519 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33520 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
33521 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
33522 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
33523 		public AutoOptionContext(ParserRuleContext parent, int invokingState) {
33524 			super(parent, invokingState);
33525 		}
33526 		@Override public int getRuleIndex() { return RULE_autoOption; }
33527 		@Override
33528 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33529 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutoOption(this);
33530 			else return visitor.visitChildren(this);
33531 		}
33532 	}
33533 
33534 	public final AutoOptionContext autoOption() throws RecognitionException {
33535 		AutoOptionContext _localctx = new AutoOptionContext(_ctx, getState());
33536 		enterRule(_localctx, 648, RULE_autoOption);
33537 		int _la;
33538 		try {
33539 			setState(4734);
33540 			_errHandler.sync(this);
33541 			switch (_input.LA(1)) {
33542 			case AUTO_CLOSE:
33543 				enterOuterAlt(_localctx, 1);
33544 				{
33545 				setState(4714);
33546 				match(AUTO_CLOSE);
33547 				setState(4715);
33548 				_la = _input.LA(1);
33549 				if ( !(_la==ON || _la==OFF) ) {
33550 				_errHandler.recoverInline(this);
33551 				}
33552 				else {
33553 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33554 					_errHandler.reportMatch(this);
33555 					consume();
33556 				}
33557 				}
33558 				break;
33559 			case AUTO_CREATE_STATISTICS:
33560 				enterOuterAlt(_localctx, 2);
33561 				{
33562 				setState(4716);
33563 				match(AUTO_CREATE_STATISTICS);
33564 				setState(4726);
33565 				_errHandler.sync(this);
33566 				switch (_input.LA(1)) {
33567 				case OFF:
33568 					{
33569 					setState(4717);
33570 					match(OFF);
33571 					}
33572 					break;
33573 				case ON:
33574 					{
33575 					setState(4718);
33576 					match(ON);
33577 					setState(4724);
33578 					_errHandler.sync(this);
33579 					switch ( getInterpreter().adaptivePredict(_input,507,_ctx) ) {
33580 					case 1:
33581 						{
33582 						setState(4719);
33583 						match(LP_);
33584 						setState(4720);
33585 						match(INCREMENTAL);
33586 						setState(4721);
33587 						match(EQ_);
33588 						setState(4722);
33589 						_la = _input.LA(1);
33590 						if ( !(_la==ON || _la==OFF) ) {
33591 						_errHandler.recoverInline(this);
33592 						}
33593 						else {
33594 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33595 							_errHandler.reportMatch(this);
33596 							consume();
33597 						}
33598 						setState(4723);
33599 						match(RP_);
33600 						}
33601 						break;
33602 					}
33603 					}
33604 					break;
33605 				default:
33606 					throw new NoViableAltException(this);
33607 				}
33608 				}
33609 				break;
33610 			case AUTO_SHRINK:
33611 				enterOuterAlt(_localctx, 3);
33612 				{
33613 				setState(4728);
33614 				match(AUTO_SHRINK);
33615 				setState(4729);
33616 				_la = _input.LA(1);
33617 				if ( !(_la==ON || _la==OFF) ) {
33618 				_errHandler.recoverInline(this);
33619 				}
33620 				else {
33621 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33622 					_errHandler.reportMatch(this);
33623 					consume();
33624 				}
33625 				}
33626 				break;
33627 			case AUTO_UPDATE_STATISTICS:
33628 				enterOuterAlt(_localctx, 4);
33629 				{
33630 				setState(4730);
33631 				match(AUTO_UPDATE_STATISTICS);
33632 				setState(4731);
33633 				_la = _input.LA(1);
33634 				if ( !(_la==ON || _la==OFF) ) {
33635 				_errHandler.recoverInline(this);
33636 				}
33637 				else {
33638 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33639 					_errHandler.reportMatch(this);
33640 					consume();
33641 				}
33642 				}
33643 				break;
33644 			case AUTO_UPDATE_STATISTICS_ASYNC:
33645 				enterOuterAlt(_localctx, 5);
33646 				{
33647 				setState(4732);
33648 				match(AUTO_UPDATE_STATISTICS_ASYNC);
33649 				setState(4733);
33650 				_la = _input.LA(1);
33651 				if ( !(_la==ON || _la==OFF) ) {
33652 				_errHandler.recoverInline(this);
33653 				}
33654 				else {
33655 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33656 					_errHandler.reportMatch(this);
33657 					consume();
33658 				}
33659 				}
33660 				break;
33661 			default:
33662 				throw new NoViableAltException(this);
33663 			}
33664 		}
33665 		catch (RecognitionException re) {
33666 			_localctx.exception = re;
33667 			_errHandler.reportError(this, re);
33668 			_errHandler.recover(this, re);
33669 		}
33670 		finally {
33671 			exitRule();
33672 		}
33673 		return _localctx;
33674 	}
33675 
33676 	public static class AutomaticTuningOptionContext extends ParserRuleContext {
33677 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
33678 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33679 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
33680 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33681 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33682 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33683 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33684 		public AutomaticTuningOptionContext(ParserRuleContext parent, int invokingState) {
33685 			super(parent, invokingState);
33686 		}
33687 		@Override public int getRuleIndex() { return RULE_automaticTuningOption; }
33688 		@Override
33689 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33690 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutomaticTuningOption(this);
33691 			else return visitor.visitChildren(this);
33692 		}
33693 	}
33694 
33695 	public final AutomaticTuningOptionContext automaticTuningOption() throws RecognitionException {
33696 		AutomaticTuningOptionContext _localctx = new AutomaticTuningOptionContext(_ctx, getState());
33697 		enterRule(_localctx, 650, RULE_automaticTuningOption);
33698 		int _la;
33699 		try {
33700 			enterOuterAlt(_localctx, 1);
33701 			{
33702 			setState(4736);
33703 			match(AUTOMATIC_TUNING);
33704 			setState(4737);
33705 			match(LP_);
33706 			setState(4738);
33707 			match(FORCE_LAST_GOOD_PLAN);
33708 			setState(4739);
33709 			match(EQ_);
33710 			setState(4740);
33711 			_la = _input.LA(1);
33712 			if ( !(_la==ON || _la==OFF) ) {
33713 			_errHandler.recoverInline(this);
33714 			}
33715 			else {
33716 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33717 				_errHandler.reportMatch(this);
33718 				consume();
33719 			}
33720 			setState(4741);
33721 			match(RP_);
33722 			}
33723 		}
33724 		catch (RecognitionException re) {
33725 			_localctx.exception = re;
33726 			_errHandler.reportError(this, re);
33727 			_errHandler.recover(this, re);
33728 		}
33729 		finally {
33730 			exitRule();
33731 		}
33732 		return _localctx;
33733 	}
33734 
33735 	public static class ChangeTrackingOptionContext extends ParserRuleContext {
33736 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
33737 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33738 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33739 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33740 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33741 		public List<ChangeTrackingOptionListContext> changeTrackingOptionList() {
33742 			return getRuleContexts(ChangeTrackingOptionListContext.class);
33743 		}
33744 		public ChangeTrackingOptionListContext changeTrackingOptionList(int i) {
33745 			return getRuleContext(ChangeTrackingOptionListContext.class,i);
33746 		}
33747 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33748 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33749 		public TerminalNode COMMA_(int i) {
33750 			return getToken(SQLServerStatementParser.COMMA_, i);
33751 		}
33752 		public ChangeTrackingOptionContext(ParserRuleContext parent, int invokingState) {
33753 			super(parent, invokingState);
33754 		}
33755 		@Override public int getRuleIndex() { return RULE_changeTrackingOption; }
33756 		@Override
33757 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33758 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOption(this);
33759 			else return visitor.visitChildren(this);
33760 		}
33761 	}
33762 
33763 	public final ChangeTrackingOptionContext changeTrackingOption() throws RecognitionException {
33764 		ChangeTrackingOptionContext _localctx = new ChangeTrackingOptionContext(_ctx, getState());
33765 		enterRule(_localctx, 652, RULE_changeTrackingOption);
33766 		int _la;
33767 		try {
33768 			enterOuterAlt(_localctx, 1);
33769 			{
33770 			setState(4743);
33771 			match(CHANGE_TRACKING);
33772 			setState(4763);
33773 			_errHandler.sync(this);
33774 			switch ( getInterpreter().adaptivePredict(_input,513,_ctx) ) {
33775 			case 1:
33776 				{
33777 				setState(4744);
33778 				match(EQ_);
33779 				setState(4745);
33780 				match(OFF);
33781 				}
33782 				break;
33783 			case 2:
33784 				{
33785 				setState(4748);
33786 				_errHandler.sync(this);
33787 				_la = _input.LA(1);
33788 				if (_la==EQ_) {
33789 					{
33790 					setState(4746);
33791 					match(EQ_);
33792 					setState(4747);
33793 					match(ON);
33794 					}
33795 				}
33796 
33797 				setState(4761);
33798 				_errHandler.sync(this);
33799 				switch ( getInterpreter().adaptivePredict(_input,512,_ctx) ) {
33800 				case 1:
33801 					{
33802 					setState(4750);
33803 					match(LP_);
33804 					setState(4751);
33805 					changeTrackingOptionList();
33806 					setState(4756);
33807 					_errHandler.sync(this);
33808 					_la = _input.LA(1);
33809 					while (_la==COMMA_) {
33810 						{
33811 						{
33812 						setState(4752);
33813 						match(COMMA_);
33814 						setState(4753);
33815 						changeTrackingOptionList();
33816 						}
33817 						}
33818 						setState(4758);
33819 						_errHandler.sync(this);
33820 						_la = _input.LA(1);
33821 					}
33822 					setState(4759);
33823 					match(RP_);
33824 					}
33825 					break;
33826 				}
33827 				}
33828 				break;
33829 			}
33830 			}
33831 		}
33832 		catch (RecognitionException re) {
33833 			_localctx.exception = re;
33834 			_errHandler.reportError(this, re);
33835 			_errHandler.recover(this, re);
33836 		}
33837 		finally {
33838 			exitRule();
33839 		}
33840 		return _localctx;
33841 	}
33842 
33843 	public static class ChangeTrackingOptionListContext extends ParserRuleContext {
33844 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
33845 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33846 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33847 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33848 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
33849 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33850 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
33851 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
33852 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
33853 		public ChangeTrackingOptionListContext(ParserRuleContext parent, int invokingState) {
33854 			super(parent, invokingState);
33855 		}
33856 		@Override public int getRuleIndex() { return RULE_changeTrackingOptionList; }
33857 		@Override
33858 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33859 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOptionList(this);
33860 			else return visitor.visitChildren(this);
33861 		}
33862 	}
33863 
33864 	public final ChangeTrackingOptionListContext changeTrackingOptionList() throws RecognitionException {
33865 		ChangeTrackingOptionListContext _localctx = new ChangeTrackingOptionListContext(_ctx, getState());
33866 		enterRule(_localctx, 654, RULE_changeTrackingOptionList);
33867 		int _la;
33868 		try {
33869 			setState(4772);
33870 			_errHandler.sync(this);
33871 			switch (_input.LA(1)) {
33872 			case AUTO_CLEANUP:
33873 				enterOuterAlt(_localctx, 1);
33874 				{
33875 				setState(4765);
33876 				match(AUTO_CLEANUP);
33877 				setState(4766);
33878 				match(EQ_);
33879 				setState(4767);
33880 				_la = _input.LA(1);
33881 				if ( !(_la==ON || _la==OFF) ) {
33882 				_errHandler.recoverInline(this);
33883 				}
33884 				else {
33885 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33886 					_errHandler.reportMatch(this);
33887 					consume();
33888 				}
33889 				}
33890 				break;
33891 			case CHANGE_RETENTION:
33892 				enterOuterAlt(_localctx, 2);
33893 				{
33894 				setState(4768);
33895 				match(CHANGE_RETENTION);
33896 				setState(4769);
33897 				match(EQ_);
33898 				setState(4770);
33899 				match(NUMBER_);
33900 				setState(4771);
33901 				_la = _input.LA(1);
33902 				if ( !(_la==DAYS || _la==MINUTES || _la==HOURS) ) {
33903 				_errHandler.recoverInline(this);
33904 				}
33905 				else {
33906 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33907 					_errHandler.reportMatch(this);
33908 					consume();
33909 				}
33910 				}
33911 				break;
33912 			default:
33913 				throw new NoViableAltException(this);
33914 			}
33915 		}
33916 		catch (RecognitionException re) {
33917 			_localctx.exception = re;
33918 			_errHandler.reportError(this, re);
33919 			_errHandler.recover(this, re);
33920 		}
33921 		finally {
33922 			exitRule();
33923 		}
33924 		return _localctx;
33925 	}
33926 
33927 	public static class CursorOptionContext extends ParserRuleContext {
33928 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
33929 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33930 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33931 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
33932 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
33933 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
33934 		public CursorOptionContext(ParserRuleContext parent, int invokingState) {
33935 			super(parent, invokingState);
33936 		}
33937 		@Override public int getRuleIndex() { return RULE_cursorOption; }
33938 		@Override
33939 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33940 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorOption(this);
33941 			else return visitor.visitChildren(this);
33942 		}
33943 	}
33944 
33945 	public final CursorOptionContext cursorOption() throws RecognitionException {
33946 		CursorOptionContext _localctx = new CursorOptionContext(_ctx, getState());
33947 		enterRule(_localctx, 656, RULE_cursorOption);
33948 		int _la;
33949 		try {
33950 			setState(4778);
33951 			_errHandler.sync(this);
33952 			switch (_input.LA(1)) {
33953 			case CURSOR_CLOSE_ON_COMMIT:
33954 				enterOuterAlt(_localctx, 1);
33955 				{
33956 				setState(4774);
33957 				match(CURSOR_CLOSE_ON_COMMIT);
33958 				setState(4775);
33959 				_la = _input.LA(1);
33960 				if ( !(_la==ON || _la==OFF) ) {
33961 				_errHandler.recoverInline(this);
33962 				}
33963 				else {
33964 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33965 					_errHandler.reportMatch(this);
33966 					consume();
33967 				}
33968 				}
33969 				break;
33970 			case CURSOR_DEFAULT:
33971 				enterOuterAlt(_localctx, 2);
33972 				{
33973 				setState(4776);
33974 				match(CURSOR_DEFAULT);
33975 				setState(4777);
33976 				_la = _input.LA(1);
33977 				if ( !(_la==LOCAL || _la==GLOBAL) ) {
33978 				_errHandler.recoverInline(this);
33979 				}
33980 				else {
33981 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33982 					_errHandler.reportMatch(this);
33983 					consume();
33984 				}
33985 				}
33986 				break;
33987 			default:
33988 				throw new NoViableAltException(this);
33989 			}
33990 		}
33991 		catch (RecognitionException re) {
33992 			_localctx.exception = re;
33993 			_errHandler.reportError(this, re);
33994 			_errHandler.recover(this, re);
33995 		}
33996 		finally {
33997 			exitRule();
33998 		}
33999 		return _localctx;
34000 	}
34001 
34002 	public static class ExternalAccessOptionContext extends ParserRuleContext {
34003 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
34004 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34005 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34006 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
34007 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
34008 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34009 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
34010 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
34011 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
34012 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
34013 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
34014 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34015 		public ExternalAccessOptionContext(ParserRuleContext parent, int invokingState) {
34016 			super(parent, invokingState);
34017 		}
34018 		@Override public int getRuleIndex() { return RULE_externalAccessOption; }
34019 		@Override
34020 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34021 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExternalAccessOption(this);
34022 			else return visitor.visitChildren(this);
34023 		}
34024 	}
34025 
34026 	public final ExternalAccessOptionContext externalAccessOption() throws RecognitionException {
34027 		ExternalAccessOptionContext _localctx = new ExternalAccessOptionContext(_ctx, getState());
34028 		enterRule(_localctx, 658, RULE_externalAccessOption);
34029 		int _la;
34030 		try {
34031 			setState(4799);
34032 			_errHandler.sync(this);
34033 			switch (_input.LA(1)) {
34034 			case DB_CHAINING:
34035 				enterOuterAlt(_localctx, 1);
34036 				{
34037 				setState(4780);
34038 				match(DB_CHAINING);
34039 				setState(4781);
34040 				_la = _input.LA(1);
34041 				if ( !(_la==ON || _la==OFF) ) {
34042 				_errHandler.recoverInline(this);
34043 				}
34044 				else {
34045 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34046 					_errHandler.reportMatch(this);
34047 					consume();
34048 				}
34049 				}
34050 				break;
34051 			case TRUSTWORTHY:
34052 				enterOuterAlt(_localctx, 2);
34053 				{
34054 				setState(4782);
34055 				match(TRUSTWORTHY);
34056 				setState(4783);
34057 				_la = _input.LA(1);
34058 				if ( !(_la==ON || _la==OFF) ) {
34059 				_errHandler.recoverInline(this);
34060 				}
34061 				else {
34062 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34063 					_errHandler.reportMatch(this);
34064 					consume();
34065 				}
34066 				}
34067 				break;
34068 			case DEFAULT_FULLTEXT_LANGUAGE:
34069 				enterOuterAlt(_localctx, 3);
34070 				{
34071 				setState(4784);
34072 				match(DEFAULT_FULLTEXT_LANGUAGE);
34073 				setState(4785);
34074 				match(EQ_);
34075 				setState(4786);
34076 				match(STRING_);
34077 				}
34078 				break;
34079 			case DEFAULT_LANGUAGE:
34080 				enterOuterAlt(_localctx, 4);
34081 				{
34082 				setState(4787);
34083 				match(DEFAULT_LANGUAGE);
34084 				setState(4788);
34085 				match(EQ_);
34086 				setState(4789);
34087 				match(STRING_);
34088 				}
34089 				break;
34090 			case NESTED_TRIGGERS:
34091 				enterOuterAlt(_localctx, 5);
34092 				{
34093 				setState(4790);
34094 				match(NESTED_TRIGGERS);
34095 				setState(4791);
34096 				match(EQ_);
34097 				setState(4792);
34098 				_la = _input.LA(1);
34099 				if ( !(_la==ON || _la==OFF) ) {
34100 				_errHandler.recoverInline(this);
34101 				}
34102 				else {
34103 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34104 					_errHandler.reportMatch(this);
34105 					consume();
34106 				}
34107 				}
34108 				break;
34109 			case TRANSFORM_NOISE_WORDS:
34110 				enterOuterAlt(_localctx, 6);
34111 				{
34112 				setState(4793);
34113 				match(TRANSFORM_NOISE_WORDS);
34114 				setState(4794);
34115 				match(EQ_);
34116 				setState(4795);
34117 				_la = _input.LA(1);
34118 				if ( !(_la==ON || _la==OFF) ) {
34119 				_errHandler.recoverInline(this);
34120 				}
34121 				else {
34122 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34123 					_errHandler.reportMatch(this);
34124 					consume();
34125 				}
34126 				}
34127 				break;
34128 			case TWO_DIGIT_YEAR_CUTOFF:
34129 				enterOuterAlt(_localctx, 7);
34130 				{
34131 				setState(4796);
34132 				match(TWO_DIGIT_YEAR_CUTOFF);
34133 				setState(4797);
34134 				match(EQ_);
34135 				setState(4798);
34136 				match(NUMBER_);
34137 				}
34138 				break;
34139 			default:
34140 				throw new NoViableAltException(this);
34141 			}
34142 		}
34143 		catch (RecognitionException re) {
34144 			_localctx.exception = re;
34145 			_errHandler.reportError(this, re);
34146 			_errHandler.recover(this, re);
34147 		}
34148 		finally {
34149 			exitRule();
34150 		}
34151 		return _localctx;
34152 	}
34153 
34154 	public static class QueryStoreOptionsContext extends ParserRuleContext {
34155 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
34156 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34157 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34158 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34159 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34160 		public List<QueryStoreOptionListContext> queryStoreOptionList() {
34161 			return getRuleContexts(QueryStoreOptionListContext.class);
34162 		}
34163 		public QueryStoreOptionListContext queryStoreOptionList(int i) {
34164 			return getRuleContext(QueryStoreOptionListContext.class,i);
34165 		}
34166 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34167 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34168 		public TerminalNode COMMA_(int i) {
34169 			return getToken(SQLServerStatementParser.COMMA_, i);
34170 		}
34171 		public QueryStoreOptionsContext(ParserRuleContext parent, int invokingState) {
34172 			super(parent, invokingState);
34173 		}
34174 		@Override public int getRuleIndex() { return RULE_queryStoreOptions; }
34175 		@Override
34176 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34177 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptions(this);
34178 			else return visitor.visitChildren(this);
34179 		}
34180 	}
34181 
34182 	public final QueryStoreOptionsContext queryStoreOptions() throws RecognitionException {
34183 		QueryStoreOptionsContext _localctx = new QueryStoreOptionsContext(_ctx, getState());
34184 		enterRule(_localctx, 660, RULE_queryStoreOptions);
34185 		int _la;
34186 		try {
34187 			enterOuterAlt(_localctx, 1);
34188 			{
34189 			setState(4801);
34190 			match(QUERY_STORE);
34191 			setState(4821);
34192 			_errHandler.sync(this);
34193 			switch ( getInterpreter().adaptivePredict(_input,520,_ctx) ) {
34194 			case 1:
34195 				{
34196 				setState(4802);
34197 				match(EQ_);
34198 				setState(4803);
34199 				match(OFF);
34200 				}
34201 				break;
34202 			case 2:
34203 				{
34204 				setState(4806);
34205 				_errHandler.sync(this);
34206 				_la = _input.LA(1);
34207 				if (_la==EQ_) {
34208 					{
34209 					setState(4804);
34210 					match(EQ_);
34211 					setState(4805);
34212 					match(ON);
34213 					}
34214 				}
34215 
34216 				setState(4819);
34217 				_errHandler.sync(this);
34218 				switch ( getInterpreter().adaptivePredict(_input,519,_ctx) ) {
34219 				case 1:
34220 					{
34221 					setState(4808);
34222 					match(LP_);
34223 					setState(4809);
34224 					queryStoreOptionList();
34225 					setState(4814);
34226 					_errHandler.sync(this);
34227 					_la = _input.LA(1);
34228 					while (_la==COMMA_) {
34229 						{
34230 						{
34231 						setState(4810);
34232 						match(COMMA_);
34233 						setState(4811);
34234 						queryStoreOptionList();
34235 						}
34236 						}
34237 						setState(4816);
34238 						_errHandler.sync(this);
34239 						_la = _input.LA(1);
34240 					}
34241 					setState(4817);
34242 					match(RP_);
34243 					}
34244 					break;
34245 				}
34246 				}
34247 				break;
34248 			}
34249 			}
34250 		}
34251 		catch (RecognitionException re) {
34252 			_localctx.exception = re;
34253 			_errHandler.reportError(this, re);
34254 			_errHandler.recover(this, re);
34255 		}
34256 		finally {
34257 			exitRule();
34258 		}
34259 		return _localctx;
34260 	}
34261 
34262 	public static class QueryStoreOptionListContext extends ParserRuleContext {
34263 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
34264 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
34265 		public TerminalNode EQ_(int i) {
34266 			return getToken(SQLServerStatementParser.EQ_, i);
34267 		}
34268 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
34269 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
34270 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
34271 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34272 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
34273 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34274 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34275 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
34276 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
34277 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
34278 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
34279 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
34280 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34281 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
34282 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
34283 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
34284 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
34285 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
34286 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
34287 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34288 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
34289 		public List<QueryCapturePolicyOptionListContext> queryCapturePolicyOptionList() {
34290 			return getRuleContexts(QueryCapturePolicyOptionListContext.class);
34291 		}
34292 		public QueryCapturePolicyOptionListContext queryCapturePolicyOptionList(int i) {
34293 			return getRuleContext(QueryCapturePolicyOptionListContext.class,i);
34294 		}
34295 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34296 		public TerminalNode COMMA_(int i) {
34297 			return getToken(SQLServerStatementParser.COMMA_, i);
34298 		}
34299 		public QueryStoreOptionListContext(ParserRuleContext parent, int invokingState) {
34300 			super(parent, invokingState);
34301 		}
34302 		@Override public int getRuleIndex() { return RULE_queryStoreOptionList; }
34303 		@Override
34304 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34305 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptionList(this);
34306 			else return visitor.visitChildren(this);
34307 		}
34308 	}
34309 
34310 	public final QueryStoreOptionListContext queryStoreOptionList() throws RecognitionException {
34311 		QueryStoreOptionListContext _localctx = new QueryStoreOptionListContext(_ctx, getState());
34312 		enterRule(_localctx, 662, RULE_queryStoreOptionList);
34313 		int _la;
34314 		try {
34315 			setState(4867);
34316 			_errHandler.sync(this);
34317 			switch (_input.LA(1)) {
34318 			case OPERATION_MODE:
34319 				enterOuterAlt(_localctx, 1);
34320 				{
34321 				setState(4823);
34322 				match(OPERATION_MODE);
34323 				setState(4824);
34324 				match(EQ_);
34325 				setState(4825);
34326 				_la = _input.LA(1);
34327 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
34328 				_errHandler.recoverInline(this);
34329 				}
34330 				else {
34331 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34332 					_errHandler.reportMatch(this);
34333 					consume();
34334 				}
34335 				}
34336 				break;
34337 			case CLEANUP_POLICY:
34338 				enterOuterAlt(_localctx, 2);
34339 				{
34340 				setState(4826);
34341 				match(CLEANUP_POLICY);
34342 				setState(4827);
34343 				match(EQ_);
34344 				setState(4828);
34345 				match(LP_);
34346 				setState(4829);
34347 				match(STALE_QUERY_THRESHOLD_DAYS);
34348 				setState(4830);
34349 				match(EQ_);
34350 				setState(4831);
34351 				match(NUMBER_);
34352 				setState(4832);
34353 				match(RP_);
34354 				}
34355 				break;
34356 			case DATA_FLUSH_INTERVAL_SECONDS:
34357 				enterOuterAlt(_localctx, 3);
34358 				{
34359 				setState(4833);
34360 				match(DATA_FLUSH_INTERVAL_SECONDS);
34361 				setState(4834);
34362 				match(EQ_);
34363 				setState(4835);
34364 				match(NUMBER_);
34365 				}
34366 				break;
34367 			case MAX_STORAGE_SIZE_MB:
34368 				enterOuterAlt(_localctx, 4);
34369 				{
34370 				setState(4836);
34371 				match(MAX_STORAGE_SIZE_MB);
34372 				setState(4837);
34373 				match(EQ_);
34374 				setState(4838);
34375 				match(NUMBER_);
34376 				}
34377 				break;
34378 			case INTERVAL_LENGTH_MINUTES:
34379 				enterOuterAlt(_localctx, 5);
34380 				{
34381 				setState(4839);
34382 				match(INTERVAL_LENGTH_MINUTES);
34383 				setState(4840);
34384 				match(EQ_);
34385 				setState(4841);
34386 				match(NUMBER_);
34387 				}
34388 				break;
34389 			case SIZE_BASED_CLEANUP_MODE:
34390 				enterOuterAlt(_localctx, 6);
34391 				{
34392 				setState(4842);
34393 				match(SIZE_BASED_CLEANUP_MODE);
34394 				setState(4843);
34395 				match(EQ_);
34396 				setState(4844);
34397 				_la = _input.LA(1);
34398 				if ( !(_la==OFF || _la==AUTO) ) {
34399 				_errHandler.recoverInline(this);
34400 				}
34401 				else {
34402 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34403 					_errHandler.reportMatch(this);
34404 					consume();
34405 				}
34406 				}
34407 				break;
34408 			case QUERY_CAPTURE_MODE:
34409 				enterOuterAlt(_localctx, 7);
34410 				{
34411 				setState(4845);
34412 				match(QUERY_CAPTURE_MODE);
34413 				setState(4846);
34414 				match(EQ_);
34415 				setState(4847);
34416 				_la = _input.LA(1);
34417 				if ( !(_la==ALL || _la==AUTO || _la==NONE || _la==CUSTOM) ) {
34418 				_errHandler.recoverInline(this);
34419 				}
34420 				else {
34421 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34422 					_errHandler.reportMatch(this);
34423 					consume();
34424 				}
34425 				}
34426 				break;
34427 			case MAX_PLANS_PER_QUERY:
34428 				enterOuterAlt(_localctx, 8);
34429 				{
34430 				setState(4848);
34431 				match(MAX_PLANS_PER_QUERY);
34432 				setState(4849);
34433 				match(EQ_);
34434 				setState(4850);
34435 				match(NUMBER_);
34436 				}
34437 				break;
34438 			case WAIT_STATS_CAPTURE_MODE:
34439 				enterOuterAlt(_localctx, 9);
34440 				{
34441 				setState(4851);
34442 				match(WAIT_STATS_CAPTURE_MODE);
34443 				setState(4852);
34444 				match(EQ_);
34445 				setState(4853);
34446 				_la = _input.LA(1);
34447 				if ( !(_la==ON || _la==OFF) ) {
34448 				_errHandler.recoverInline(this);
34449 				}
34450 				else {
34451 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34452 					_errHandler.reportMatch(this);
34453 					consume();
34454 				}
34455 				}
34456 				break;
34457 			case QUERY_CAPTURE_POLICY:
34458 				enterOuterAlt(_localctx, 10);
34459 				{
34460 				setState(4854);
34461 				match(QUERY_CAPTURE_POLICY);
34462 				setState(4855);
34463 				match(EQ_);
34464 				setState(4856);
34465 				match(LP_);
34466 				setState(4857);
34467 				queryCapturePolicyOptionList();
34468 				setState(4862);
34469 				_errHandler.sync(this);
34470 				_la = _input.LA(1);
34471 				while (_la==COMMA_) {
34472 					{
34473 					{
34474 					setState(4858);
34475 					match(COMMA_);
34476 					setState(4859);
34477 					queryCapturePolicyOptionList();
34478 					}
34479 					}
34480 					setState(4864);
34481 					_errHandler.sync(this);
34482 					_la = _input.LA(1);
34483 				}
34484 				setState(4865);
34485 				match(RP_);
34486 				}
34487 				break;
34488 			default:
34489 				throw new NoViableAltException(this);
34490 			}
34491 		}
34492 		catch (RecognitionException re) {
34493 			_localctx.exception = re;
34494 			_errHandler.reportError(this, re);
34495 			_errHandler.recover(this, re);
34496 		}
34497 		finally {
34498 			exitRule();
34499 		}
34500 		return _localctx;
34501 	}
34502 
34503 	public static class QueryCapturePolicyOptionListContext extends ParserRuleContext {
34504 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
34505 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34506 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34507 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
34508 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
34509 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
34510 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
34511 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
34512 		public QueryCapturePolicyOptionListContext(ParserRuleContext parent, int invokingState) {
34513 			super(parent, invokingState);
34514 		}
34515 		@Override public int getRuleIndex() { return RULE_queryCapturePolicyOptionList; }
34516 		@Override
34517 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34518 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryCapturePolicyOptionList(this);
34519 			else return visitor.visitChildren(this);
34520 		}
34521 	}
34522 
34523 	public final QueryCapturePolicyOptionListContext queryCapturePolicyOptionList() throws RecognitionException {
34524 		QueryCapturePolicyOptionListContext _localctx = new QueryCapturePolicyOptionListContext(_ctx, getState());
34525 		enterRule(_localctx, 664, RULE_queryCapturePolicyOptionList);
34526 		int _la;
34527 		try {
34528 			setState(4882);
34529 			_errHandler.sync(this);
34530 			switch (_input.LA(1)) {
34531 			case STALE_CAPTURE_POLICY_THRESHOLD:
34532 				enterOuterAlt(_localctx, 1);
34533 				{
34534 				setState(4869);
34535 				match(STALE_CAPTURE_POLICY_THRESHOLD);
34536 				setState(4870);
34537 				match(EQ_);
34538 				setState(4871);
34539 				match(NUMBER_);
34540 				setState(4872);
34541 				_la = _input.LA(1);
34542 				if ( !(_la==DAYS || _la==HOURS) ) {
34543 				_errHandler.recoverInline(this);
34544 				}
34545 				else {
34546 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34547 					_errHandler.reportMatch(this);
34548 					consume();
34549 				}
34550 				}
34551 				break;
34552 			case EXECUTION_COUNT:
34553 				enterOuterAlt(_localctx, 2);
34554 				{
34555 				setState(4873);
34556 				match(EXECUTION_COUNT);
34557 				setState(4874);
34558 				match(EQ_);
34559 				setState(4875);
34560 				match(NUMBER_);
34561 				}
34562 				break;
34563 			case TOTAL_COMPILE_CPU_TIME_MS:
34564 				enterOuterAlt(_localctx, 3);
34565 				{
34566 				setState(4876);
34567 				match(TOTAL_COMPILE_CPU_TIME_MS);
34568 				setState(4877);
34569 				match(EQ_);
34570 				setState(4878);
34571 				match(NUMBER_);
34572 				}
34573 				break;
34574 			case TOTAL_EXECUTION_CPU_TIME_MS:
34575 				enterOuterAlt(_localctx, 4);
34576 				{
34577 				setState(4879);
34578 				match(TOTAL_EXECUTION_CPU_TIME_MS);
34579 				setState(4880);
34580 				match(EQ_);
34581 				setState(4881);
34582 				match(NUMBER_);
34583 				}
34584 				break;
34585 			default:
34586 				throw new NoViableAltException(this);
34587 			}
34588 		}
34589 		catch (RecognitionException re) {
34590 			_localctx.exception = re;
34591 			_errHandler.reportError(this, re);
34592 			_errHandler.recover(this, re);
34593 		}
34594 		finally {
34595 			exitRule();
34596 		}
34597 		return _localctx;
34598 	}
34599 
34600 	public static class RecoveryOptionContext extends ParserRuleContext {
34601 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
34602 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
34603 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
34604 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
34605 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
34606 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34607 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34608 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
34609 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
34610 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
34611 		public RecoveryOptionContext(ParserRuleContext parent, int invokingState) {
34612 			super(parent, invokingState);
34613 		}
34614 		@Override public int getRuleIndex() { return RULE_recoveryOption; }
34615 		@Override
34616 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34617 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRecoveryOption(this);
34618 			else return visitor.visitChildren(this);
34619 		}
34620 	}
34621 
34622 	public final RecoveryOptionContext recoveryOption() throws RecognitionException {
34623 		RecoveryOptionContext _localctx = new RecoveryOptionContext(_ctx, getState());
34624 		enterRule(_localctx, 666, RULE_recoveryOption);
34625 		int _la;
34626 		try {
34627 			setState(4890);
34628 			_errHandler.sync(this);
34629 			switch (_input.LA(1)) {
34630 			case RECOVERY:
34631 				enterOuterAlt(_localctx, 1);
34632 				{
34633 				setState(4884);
34634 				match(RECOVERY);
34635 				setState(4885);
34636 				_la = _input.LA(1);
34637 				if ( !(_la==FULL || _la==SIMPLE || _la==BULK_LOGGED) ) {
34638 				_errHandler.recoverInline(this);
34639 				}
34640 				else {
34641 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34642 					_errHandler.reportMatch(this);
34643 					consume();
34644 				}
34645 				}
34646 				break;
34647 			case TORN_PAGE_DETECTION:
34648 				enterOuterAlt(_localctx, 2);
34649 				{
34650 				setState(4886);
34651 				match(TORN_PAGE_DETECTION);
34652 				setState(4887);
34653 				_la = _input.LA(1);
34654 				if ( !(_la==ON || _la==OFF) ) {
34655 				_errHandler.recoverInline(this);
34656 				}
34657 				else {
34658 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34659 					_errHandler.reportMatch(this);
34660 					consume();
34661 				}
34662 				}
34663 				break;
34664 			case PAGE_VERIFY:
34665 				enterOuterAlt(_localctx, 3);
34666 				{
34667 				setState(4888);
34668 				match(PAGE_VERIFY);
34669 				setState(4889);
34670 				_la = _input.LA(1);
34671 				if ( !(_la==NONE || _la==CHECKSUM || _la==TORN_PAGE_DETECTION) ) {
34672 				_errHandler.recoverInline(this);
34673 				}
34674 				else {
34675 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34676 					_errHandler.reportMatch(this);
34677 					consume();
34678 				}
34679 				}
34680 				break;
34681 			default:
34682 				throw new NoViableAltException(this);
34683 			}
34684 		}
34685 		catch (RecognitionException re) {
34686 			_localctx.exception = re;
34687 			_errHandler.reportError(this, re);
34688 			_errHandler.recover(this, re);
34689 		}
34690 		finally {
34691 			exitRule();
34692 		}
34693 		return _localctx;
34694 	}
34695 
34696 	public static class SqlOptionContext extends ParserRuleContext {
34697 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
34698 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34699 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34700 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
34701 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
34702 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
34703 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
34704 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
34705 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34706 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34707 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
34708 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
34709 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
34710 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
34711 		public SqlOptionContext(ParserRuleContext parent, int invokingState) {
34712 			super(parent, invokingState);
34713 		}
34714 		@Override public int getRuleIndex() { return RULE_sqlOption; }
34715 		@Override
34716 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34717 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSqlOption(this);
34718 			else return visitor.visitChildren(this);
34719 		}
34720 	}
34721 
34722 	public final SqlOptionContext sqlOption() throws RecognitionException {
34723 		SqlOptionContext _localctx = new SqlOptionContext(_ctx, getState());
34724 		enterRule(_localctx, 668, RULE_sqlOption);
34725 		int _la;
34726 		try {
34727 			setState(4913);
34728 			_errHandler.sync(this);
34729 			switch (_input.LA(1)) {
34730 			case ANSI_NULL_DEFAULT:
34731 				enterOuterAlt(_localctx, 1);
34732 				{
34733 				setState(4892);
34734 				match(ANSI_NULL_DEFAULT);
34735 				setState(4893);
34736 				_la = _input.LA(1);
34737 				if ( !(_la==ON || _la==OFF) ) {
34738 				_errHandler.recoverInline(this);
34739 				}
34740 				else {
34741 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34742 					_errHandler.reportMatch(this);
34743 					consume();
34744 				}
34745 				}
34746 				break;
34747 			case ANSI_NULLS:
34748 				enterOuterAlt(_localctx, 2);
34749 				{
34750 				setState(4894);
34751 				match(ANSI_NULLS);
34752 				setState(4895);
34753 				_la = _input.LA(1);
34754 				if ( !(_la==ON || _la==OFF) ) {
34755 				_errHandler.recoverInline(this);
34756 				}
34757 				else {
34758 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34759 					_errHandler.reportMatch(this);
34760 					consume();
34761 				}
34762 				}
34763 				break;
34764 			case ANSI_PADDING:
34765 				enterOuterAlt(_localctx, 3);
34766 				{
34767 				setState(4896);
34768 				match(ANSI_PADDING);
34769 				setState(4897);
34770 				_la = _input.LA(1);
34771 				if ( !(_la==ON || _la==OFF) ) {
34772 				_errHandler.recoverInline(this);
34773 				}
34774 				else {
34775 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34776 					_errHandler.reportMatch(this);
34777 					consume();
34778 				}
34779 				}
34780 				break;
34781 			case ANSI_WARNINGS:
34782 				enterOuterAlt(_localctx, 4);
34783 				{
34784 				setState(4898);
34785 				match(ANSI_WARNINGS);
34786 				setState(4899);
34787 				_la = _input.LA(1);
34788 				if ( !(_la==ON || _la==OFF) ) {
34789 				_errHandler.recoverInline(this);
34790 				}
34791 				else {
34792 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34793 					_errHandler.reportMatch(this);
34794 					consume();
34795 				}
34796 				}
34797 				break;
34798 			case ARITHABORT:
34799 				enterOuterAlt(_localctx, 5);
34800 				{
34801 				setState(4900);
34802 				match(ARITHABORT);
34803 				setState(4901);
34804 				_la = _input.LA(1);
34805 				if ( !(_la==ON || _la==OFF) ) {
34806 				_errHandler.recoverInline(this);
34807 				}
34808 				else {
34809 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34810 					_errHandler.reportMatch(this);
34811 					consume();
34812 				}
34813 				}
34814 				break;
34815 			case COMPATIBILITY_LEVEL:
34816 				enterOuterAlt(_localctx, 6);
34817 				{
34818 				setState(4902);
34819 				match(COMPATIBILITY_LEVEL);
34820 				setState(4903);
34821 				match(EQ_);
34822 				setState(4904);
34823 				match(NUMBER_);
34824 				}
34825 				break;
34826 			case CONCAT_NULL_YIELDS_NULL:
34827 				enterOuterAlt(_localctx, 7);
34828 				{
34829 				setState(4905);
34830 				match(CONCAT_NULL_YIELDS_NULL);
34831 				setState(4906);
34832 				_la = _input.LA(1);
34833 				if ( !(_la==ON || _la==OFF) ) {
34834 				_errHandler.recoverInline(this);
34835 				}
34836 				else {
34837 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34838 					_errHandler.reportMatch(this);
34839 					consume();
34840 				}
34841 				}
34842 				break;
34843 			case NUMERIC_ROUNDABORT:
34844 				enterOuterAlt(_localctx, 8);
34845 				{
34846 				setState(4907);
34847 				match(NUMERIC_ROUNDABORT);
34848 				setState(4908);
34849 				_la = _input.LA(1);
34850 				if ( !(_la==ON || _la==OFF) ) {
34851 				_errHandler.recoverInline(this);
34852 				}
34853 				else {
34854 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34855 					_errHandler.reportMatch(this);
34856 					consume();
34857 				}
34858 				}
34859 				break;
34860 			case QUOTED_IDENTIFIER:
34861 				enterOuterAlt(_localctx, 9);
34862 				{
34863 				setState(4909);
34864 				match(QUOTED_IDENTIFIER);
34865 				setState(4910);
34866 				_la = _input.LA(1);
34867 				if ( !(_la==ON || _la==OFF) ) {
34868 				_errHandler.recoverInline(this);
34869 				}
34870 				else {
34871 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34872 					_errHandler.reportMatch(this);
34873 					consume();
34874 				}
34875 				}
34876 				break;
34877 			case RECURSIVE_TRIGGERS:
34878 				enterOuterAlt(_localctx, 10);
34879 				{
34880 				setState(4911);
34881 				match(RECURSIVE_TRIGGERS);
34882 				setState(4912);
34883 				_la = _input.LA(1);
34884 				if ( !(_la==ON || _la==OFF) ) {
34885 				_errHandler.recoverInline(this);
34886 				}
34887 				else {
34888 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34889 					_errHandler.reportMatch(this);
34890 					consume();
34891 				}
34892 				}
34893 				break;
34894 			default:
34895 				throw new NoViableAltException(this);
34896 			}
34897 		}
34898 		catch (RecognitionException re) {
34899 			_localctx.exception = re;
34900 			_errHandler.reportError(this, re);
34901 			_errHandler.recover(this, re);
34902 		}
34903 		finally {
34904 			exitRule();
34905 		}
34906 		return _localctx;
34907 	}
34908 
34909 	public static class SnapshotOptionContext extends ParserRuleContext {
34910 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
34911 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34912 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34913 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
34914 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
34915 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34916 		public SnapshotOptionContext(ParserRuleContext parent, int invokingState) {
34917 			super(parent, invokingState);
34918 		}
34919 		@Override public int getRuleIndex() { return RULE_snapshotOption; }
34920 		@Override
34921 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34922 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSnapshotOption(this);
34923 			else return visitor.visitChildren(this);
34924 		}
34925 	}
34926 
34927 	public final SnapshotOptionContext snapshotOption() throws RecognitionException {
34928 		SnapshotOptionContext _localctx = new SnapshotOptionContext(_ctx, getState());
34929 		enterRule(_localctx, 670, RULE_snapshotOption);
34930 		int _la;
34931 		try {
34932 			setState(4922);
34933 			_errHandler.sync(this);
34934 			switch (_input.LA(1)) {
34935 			case ALLOW_SNAPSHOT_ISOLATION:
34936 				enterOuterAlt(_localctx, 1);
34937 				{
34938 				setState(4915);
34939 				match(ALLOW_SNAPSHOT_ISOLATION);
34940 				setState(4916);
34941 				_la = _input.LA(1);
34942 				if ( !(_la==ON || _la==OFF) ) {
34943 				_errHandler.recoverInline(this);
34944 				}
34945 				else {
34946 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34947 					_errHandler.reportMatch(this);
34948 					consume();
34949 				}
34950 				}
34951 				break;
34952 			case READ_COMMITTED_SNAPSHOT:
34953 				enterOuterAlt(_localctx, 2);
34954 				{
34955 				setState(4917);
34956 				match(READ_COMMITTED_SNAPSHOT);
34957 				setState(4918);
34958 				_la = _input.LA(1);
34959 				if ( !(_la==ON || _la==OFF) ) {
34960 				_errHandler.recoverInline(this);
34961 				}
34962 				else {
34963 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34964 					_errHandler.reportMatch(this);
34965 					consume();
34966 				}
34967 				}
34968 				break;
34969 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
34970 				enterOuterAlt(_localctx, 3);
34971 				{
34972 				setState(4919);
34973 				match(MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT);
34974 				setState(4920);
34975 				match(EQ_);
34976 				setState(4921);
34977 				_la = _input.LA(1);
34978 				if ( !(_la==ON || _la==OFF) ) {
34979 				_errHandler.recoverInline(this);
34980 				}
34981 				else {
34982 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34983 					_errHandler.reportMatch(this);
34984 					consume();
34985 				}
34986 				}
34987 				break;
34988 			default:
34989 				throw new NoViableAltException(this);
34990 			}
34991 		}
34992 		catch (RecognitionException re) {
34993 			_localctx.exception = re;
34994 			_errHandler.reportError(this, re);
34995 			_errHandler.recover(this, re);
34996 		}
34997 		finally {
34998 			exitRule();
34999 		}
35000 		return _localctx;
35001 	}
35002 
35003 	public static class ServiceBrokerOptionContext extends ParserRuleContext {
35004 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
35005 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
35006 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
35007 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
35008 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
35009 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
35010 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
35011 		public ServiceBrokerOptionContext(ParserRuleContext parent, int invokingState) {
35012 			super(parent, invokingState);
35013 		}
35014 		@Override public int getRuleIndex() { return RULE_serviceBrokerOption; }
35015 		@Override
35016 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35017 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerOption(this);
35018 			else return visitor.visitChildren(this);
35019 		}
35020 	}
35021 
35022 	public final ServiceBrokerOptionContext serviceBrokerOption() throws RecognitionException {
35023 		ServiceBrokerOptionContext _localctx = new ServiceBrokerOptionContext(_ctx, getState());
35024 		enterRule(_localctx, 672, RULE_serviceBrokerOption);
35025 		int _la;
35026 		try {
35027 			setState(4930);
35028 			_errHandler.sync(this);
35029 			switch (_input.LA(1)) {
35030 			case ENABLE_BROKER:
35031 				enterOuterAlt(_localctx, 1);
35032 				{
35033 				setState(4924);
35034 				match(ENABLE_BROKER);
35035 				}
35036 				break;
35037 			case DISABLE_BROKER:
35038 				enterOuterAlt(_localctx, 2);
35039 				{
35040 				setState(4925);
35041 				match(DISABLE_BROKER);
35042 				}
35043 				break;
35044 			case NEW_BROKER:
35045 				enterOuterAlt(_localctx, 3);
35046 				{
35047 				setState(4926);
35048 				match(NEW_BROKER);
35049 				}
35050 				break;
35051 			case ERROR_BROKER_CONVERSATIONS:
35052 				enterOuterAlt(_localctx, 4);
35053 				{
35054 				setState(4927);
35055 				match(ERROR_BROKER_CONVERSATIONS);
35056 				}
35057 				break;
35058 			case HONOR_BROKER_PRIORITY:
35059 				enterOuterAlt(_localctx, 5);
35060 				{
35061 				setState(4928);
35062 				match(HONOR_BROKER_PRIORITY);
35063 				setState(4929);
35064 				_la = _input.LA(1);
35065 				if ( !(_la==ON || _la==OFF) ) {
35066 				_errHandler.recoverInline(this);
35067 				}
35068 				else {
35069 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35070 					_errHandler.reportMatch(this);
35071 					consume();
35072 				}
35073 				}
35074 				break;
35075 			default:
35076 				throw new NoViableAltException(this);
35077 			}
35078 		}
35079 		catch (RecognitionException re) {
35080 			_localctx.exception = re;
35081 			_errHandler.reportError(this, re);
35082 			_errHandler.recover(this, re);
35083 		}
35084 		finally {
35085 			exitRule();
35086 		}
35087 		return _localctx;
35088 	}
35089 
35090 	public static class TargetRecoveryTimeOptionContext extends ParserRuleContext {
35091 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
35092 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35093 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
35094 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
35095 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
35096 		public TargetRecoveryTimeOptionContext(ParserRuleContext parent, int invokingState) {
35097 			super(parent, invokingState);
35098 		}
35099 		@Override public int getRuleIndex() { return RULE_targetRecoveryTimeOption; }
35100 		@Override
35101 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35102 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTargetRecoveryTimeOption(this);
35103 			else return visitor.visitChildren(this);
35104 		}
35105 	}
35106 
35107 	public final TargetRecoveryTimeOptionContext targetRecoveryTimeOption() throws RecognitionException {
35108 		TargetRecoveryTimeOptionContext _localctx = new TargetRecoveryTimeOptionContext(_ctx, getState());
35109 		enterRule(_localctx, 674, RULE_targetRecoveryTimeOption);
35110 		int _la;
35111 		try {
35112 			enterOuterAlt(_localctx, 1);
35113 			{
35114 			setState(4932);
35115 			match(TARGET_RECOVERY_TIME);
35116 			setState(4933);
35117 			match(EQ_);
35118 			setState(4934);
35119 			match(NUMBER_);
35120 			setState(4935);
35121 			_la = _input.LA(1);
35122 			if ( !(_la==MINUTES || _la==SECONDS) ) {
35123 			_errHandler.recoverInline(this);
35124 			}
35125 			else {
35126 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35127 				_errHandler.reportMatch(this);
35128 				consume();
35129 			}
35130 			}
35131 		}
35132 		catch (RecognitionException re) {
35133 			_localctx.exception = re;
35134 			_errHandler.reportError(this, re);
35135 			_errHandler.recover(this, re);
35136 		}
35137 		finally {
35138 			exitRule();
35139 		}
35140 		return _localctx;
35141 	}
35142 
35143 	public static class TerminationContext extends ParserRuleContext {
35144 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
35145 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
35146 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
35147 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
35148 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
35149 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
35150 		public TerminationContext(ParserRuleContext parent, int invokingState) {
35151 			super(parent, invokingState);
35152 		}
35153 		@Override public int getRuleIndex() { return RULE_termination; }
35154 		@Override
35155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTermination(this);
35157 			else return visitor.visitChildren(this);
35158 		}
35159 	}
35160 
35161 	public final TerminationContext termination() throws RecognitionException {
35162 		TerminationContext _localctx = new TerminationContext(_ctx, getState());
35163 		enterRule(_localctx, 676, RULE_termination);
35164 		int _la;
35165 		try {
35166 			setState(4946);
35167 			_errHandler.sync(this);
35168 			switch ( getInterpreter().adaptivePredict(_input,529,_ctx) ) {
35169 			case 1:
35170 				enterOuterAlt(_localctx, 1);
35171 				{
35172 				setState(4937);
35173 				match(ROLLBACK);
35174 				setState(4938);
35175 				match(AFTER);
35176 				setState(4939);
35177 				match(NUMBER_);
35178 				setState(4941);
35179 				_errHandler.sync(this);
35180 				_la = _input.LA(1);
35181 				if (_la==SECONDS) {
35182 					{
35183 					setState(4940);
35184 					match(SECONDS);
35185 					}
35186 				}
35187 
35188 				}
35189 				break;
35190 			case 2:
35191 				enterOuterAlt(_localctx, 2);
35192 				{
35193 				setState(4943);
35194 				match(ROLLBACK);
35195 				setState(4944);
35196 				match(IMMEDIATE);
35197 				}
35198 				break;
35199 			case 3:
35200 				enterOuterAlt(_localctx, 3);
35201 				{
35202 				setState(4945);
35203 				match(NO_WAIT);
35204 				}
35205 				break;
35206 			}
35207 		}
35208 		catch (RecognitionException re) {
35209 			_localctx.exception = re;
35210 			_errHandler.reportError(this, re);
35211 			_errHandler.recover(this, re);
35212 		}
35213 		finally {
35214 			exitRule();
35215 		}
35216 		return _localctx;
35217 	}
35218 
35219 	public static class CreateServiceClauseContext extends ParserRuleContext {
35220 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35221 		public List<ContractNameContext> contractName() {
35222 			return getRuleContexts(ContractNameContext.class);
35223 		}
35224 		public ContractNameContext contractName(int i) {
35225 			return getRuleContext(ContractNameContext.class,i);
35226 		}
35227 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35228 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35229 		public TerminalNode COMMA_(int i) {
35230 			return getToken(SQLServerStatementParser.COMMA_, i);
35231 		}
35232 		public CreateServiceClauseContext(ParserRuleContext parent, int invokingState) {
35233 			super(parent, invokingState);
35234 		}
35235 		@Override public int getRuleIndex() { return RULE_createServiceClause; }
35236 		@Override
35237 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35238 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateServiceClause(this);
35239 			else return visitor.visitChildren(this);
35240 		}
35241 	}
35242 
35243 	public final CreateServiceClauseContext createServiceClause() throws RecognitionException {
35244 		CreateServiceClauseContext _localctx = new CreateServiceClauseContext(_ctx, getState());
35245 		enterRule(_localctx, 678, RULE_createServiceClause);
35246 		int _la;
35247 		try {
35248 			enterOuterAlt(_localctx, 1);
35249 			{
35250 			setState(4948);
35251 			match(LP_);
35252 			setState(4949);
35253 			contractName();
35254 			setState(4954);
35255 			_errHandler.sync(this);
35256 			_la = _input.LA(1);
35257 			while (_la==COMMA_) {
35258 				{
35259 				{
35260 				setState(4950);
35261 				match(COMMA_);
35262 				setState(4951);
35263 				contractName();
35264 				}
35265 				}
35266 				setState(4956);
35267 				_errHandler.sync(this);
35268 				_la = _input.LA(1);
35269 			}
35270 			setState(4957);
35271 			match(RP_);
35272 			}
35273 		}
35274 		catch (RecognitionException re) {
35275 			_localctx.exception = re;
35276 			_errHandler.reportError(this, re);
35277 			_errHandler.recover(this, re);
35278 		}
35279 		finally {
35280 			exitRule();
35281 		}
35282 		return _localctx;
35283 	}
35284 
35285 	public static class AlterServiceClauseContext extends ParserRuleContext {
35286 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35287 		public List<AlterServiceOptArgContext> alterServiceOptArg() {
35288 			return getRuleContexts(AlterServiceOptArgContext.class);
35289 		}
35290 		public AlterServiceOptArgContext alterServiceOptArg(int i) {
35291 			return getRuleContext(AlterServiceOptArgContext.class,i);
35292 		}
35293 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35294 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35295 		public TerminalNode COMMA_(int i) {
35296 			return getToken(SQLServerStatementParser.COMMA_, i);
35297 		}
35298 		public AlterServiceClauseContext(ParserRuleContext parent, int invokingState) {
35299 			super(parent, invokingState);
35300 		}
35301 		@Override public int getRuleIndex() { return RULE_alterServiceClause; }
35302 		@Override
35303 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35304 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceClause(this);
35305 			else return visitor.visitChildren(this);
35306 		}
35307 	}
35308 
35309 	public final AlterServiceClauseContext alterServiceClause() throws RecognitionException {
35310 		AlterServiceClauseContext _localctx = new AlterServiceClauseContext(_ctx, getState());
35311 		enterRule(_localctx, 680, RULE_alterServiceClause);
35312 		int _la;
35313 		try {
35314 			enterOuterAlt(_localctx, 1);
35315 			{
35316 			setState(4959);
35317 			match(LP_);
35318 			setState(4960);
35319 			alterServiceOptArg();
35320 			setState(4965);
35321 			_errHandler.sync(this);
35322 			_la = _input.LA(1);
35323 			while (_la==COMMA_) {
35324 				{
35325 				{
35326 				setState(4961);
35327 				match(COMMA_);
35328 				setState(4962);
35329 				alterServiceOptArg();
35330 				}
35331 				}
35332 				setState(4967);
35333 				_errHandler.sync(this);
35334 				_la = _input.LA(1);
35335 			}
35336 			setState(4968);
35337 			match(RP_);
35338 			}
35339 		}
35340 		catch (RecognitionException re) {
35341 			_localctx.exception = re;
35342 			_errHandler.reportError(this, re);
35343 			_errHandler.recover(this, re);
35344 		}
35345 		finally {
35346 			exitRule();
35347 		}
35348 		return _localctx;
35349 	}
35350 
35351 	public static class AlterServiceOptArgContext extends ParserRuleContext {
35352 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
35353 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
35354 		public ContractNameContext contractName() {
35355 			return getRuleContext(ContractNameContext.class,0);
35356 		}
35357 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
35358 		public AlterServiceOptArgContext(ParserRuleContext parent, int invokingState) {
35359 			super(parent, invokingState);
35360 		}
35361 		@Override public int getRuleIndex() { return RULE_alterServiceOptArg; }
35362 		@Override
35363 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35364 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceOptArg(this);
35365 			else return visitor.visitChildren(this);
35366 		}
35367 	}
35368 
35369 	public final AlterServiceOptArgContext alterServiceOptArg() throws RecognitionException {
35370 		AlterServiceOptArgContext _localctx = new AlterServiceOptArgContext(_ctx, getState());
35371 		enterRule(_localctx, 682, RULE_alterServiceOptArg);
35372 		try {
35373 			setState(4976);
35374 			_errHandler.sync(this);
35375 			switch (_input.LA(1)) {
35376 			case ADD:
35377 				enterOuterAlt(_localctx, 1);
35378 				{
35379 				setState(4970);
35380 				match(ADD);
35381 				setState(4971);
35382 				match(CONTRACT);
35383 				setState(4972);
35384 				contractName();
35385 				}
35386 				break;
35387 			case DROP:
35388 				enterOuterAlt(_localctx, 2);
35389 				{
35390 				setState(4973);
35391 				match(DROP);
35392 				setState(4974);
35393 				match(CONTRACT);
35394 				setState(4975);
35395 				contractName();
35396 				}
35397 				break;
35398 			default:
35399 				throw new NoViableAltException(this);
35400 			}
35401 		}
35402 		catch (RecognitionException re) {
35403 			_localctx.exception = re;
35404 			_errHandler.reportError(this, re);
35405 			_errHandler.recover(this, re);
35406 		}
35407 		finally {
35408 			exitRule();
35409 		}
35410 		return _localctx;
35411 	}
35412 
35413 	public static class SchemaNameClauseContext extends ParserRuleContext {
35414 		public SchemaNameContext schemaName() {
35415 			return getRuleContext(SchemaNameContext.class,0);
35416 		}
35417 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
35418 		public IgnoredIdentifierContext ignoredIdentifier() {
35419 			return getRuleContext(IgnoredIdentifierContext.class,0);
35420 		}
35421 		public SchemaNameClauseContext(ParserRuleContext parent, int invokingState) {
35422 			super(parent, invokingState);
35423 		}
35424 		@Override public int getRuleIndex() { return RULE_schemaNameClause; }
35425 		@Override
35426 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35427 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaNameClause(this);
35428 			else return visitor.visitChildren(this);
35429 		}
35430 	}
35431 
35432 	public final SchemaNameClauseContext schemaNameClause() throws RecognitionException {
35433 		SchemaNameClauseContext _localctx = new SchemaNameClauseContext(_ctx, getState());
35434 		enterRule(_localctx, 684, RULE_schemaNameClause);
35435 		try {
35436 			setState(4985);
35437 			_errHandler.sync(this);
35438 			switch ( getInterpreter().adaptivePredict(_input,533,_ctx) ) {
35439 			case 1:
35440 				enterOuterAlt(_localctx, 1);
35441 				{
35442 				setState(4978);
35443 				schemaName();
35444 				}
35445 				break;
35446 			case 2:
35447 				enterOuterAlt(_localctx, 2);
35448 				{
35449 				setState(4979);
35450 				match(AUTHORIZATION);
35451 				setState(4980);
35452 				ignoredIdentifier();
35453 				}
35454 				break;
35455 			case 3:
35456 				enterOuterAlt(_localctx, 3);
35457 				{
35458 				setState(4981);
35459 				schemaName();
35460 				setState(4982);
35461 				match(AUTHORIZATION);
35462 				setState(4983);
35463 				ignoredIdentifier();
35464 				}
35465 				break;
35466 			}
35467 		}
35468 		catch (RecognitionException re) {
35469 			_localctx.exception = re;
35470 			_errHandler.reportError(this, re);
35471 			_errHandler.recover(this, re);
35472 		}
35473 		finally {
35474 			exitRule();
35475 		}
35476 		return _localctx;
35477 	}
35478 
35479 	public static class SchemaElementContext extends ParserRuleContext {
35480 		public CreateTableContext createTable() {
35481 			return getRuleContext(CreateTableContext.class,0);
35482 		}
35483 		public CreateViewContext createView() {
35484 			return getRuleContext(CreateViewContext.class,0);
35485 		}
35486 		public GrantContext grant() {
35487 			return getRuleContext(GrantContext.class,0);
35488 		}
35489 		public RevokeContext revoke() {
35490 			return getRuleContext(RevokeContext.class,0);
35491 		}
35492 		public DenyContext deny() {
35493 			return getRuleContext(DenyContext.class,0);
35494 		}
35495 		public SchemaElementContext(ParserRuleContext parent, int invokingState) {
35496 			super(parent, invokingState);
35497 		}
35498 		@Override public int getRuleIndex() { return RULE_schemaElement; }
35499 		@Override
35500 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35501 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaElement(this);
35502 			else return visitor.visitChildren(this);
35503 		}
35504 	}
35505 
35506 	public final SchemaElementContext schemaElement() throws RecognitionException {
35507 		SchemaElementContext _localctx = new SchemaElementContext(_ctx, getState());
35508 		enterRule(_localctx, 686, RULE_schemaElement);
35509 		try {
35510 			setState(4992);
35511 			_errHandler.sync(this);
35512 			switch ( getInterpreter().adaptivePredict(_input,534,_ctx) ) {
35513 			case 1:
35514 				enterOuterAlt(_localctx, 1);
35515 				{
35516 				setState(4987);
35517 				createTable();
35518 				}
35519 				break;
35520 			case 2:
35521 				enterOuterAlt(_localctx, 2);
35522 				{
35523 				setState(4988);
35524 				createView();
35525 				}
35526 				break;
35527 			case 3:
35528 				enterOuterAlt(_localctx, 3);
35529 				{
35530 				setState(4989);
35531 				grant();
35532 				}
35533 				break;
35534 			case 4:
35535 				enterOuterAlt(_localctx, 4);
35536 				{
35537 				setState(4990);
35538 				revoke();
35539 				}
35540 				break;
35541 			case 5:
35542 				enterOuterAlt(_localctx, 5);
35543 				{
35544 				setState(4991);
35545 				deny();
35546 				}
35547 				break;
35548 			}
35549 		}
35550 		catch (RecognitionException re) {
35551 			_localctx.exception = re;
35552 			_errHandler.reportError(this, re);
35553 			_errHandler.recover(this, re);
35554 		}
35555 		finally {
35556 			exitRule();
35557 		}
35558 		return _localctx;
35559 	}
35560 
35561 	public static class CreateTableAsSelectClauseContext extends ParserRuleContext {
35562 		public CreateTableAsSelectContext createTableAsSelect() {
35563 			return getRuleContext(CreateTableAsSelectContext.class,0);
35564 		}
35565 		public CreateRemoteTableAsSelectContext createRemoteTableAsSelect() {
35566 			return getRuleContext(CreateRemoteTableAsSelectContext.class,0);
35567 		}
35568 		public CreateTableAsSelectClauseContext(ParserRuleContext parent, int invokingState) {
35569 			super(parent, invokingState);
35570 		}
35571 		@Override public int getRuleIndex() { return RULE_createTableAsSelectClause; }
35572 		@Override
35573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelectClause(this);
35575 			else return visitor.visitChildren(this);
35576 		}
35577 	}
35578 
35579 	public final CreateTableAsSelectClauseContext createTableAsSelectClause() throws RecognitionException {
35580 		CreateTableAsSelectClauseContext _localctx = new CreateTableAsSelectClauseContext(_ctx, getState());
35581 		enterRule(_localctx, 688, RULE_createTableAsSelectClause);
35582 		try {
35583 			setState(4996);
35584 			_errHandler.sync(this);
35585 			switch ( getInterpreter().adaptivePredict(_input,535,_ctx) ) {
35586 			case 1:
35587 				enterOuterAlt(_localctx, 1);
35588 				{
35589 				setState(4994);
35590 				createTableAsSelect();
35591 				}
35592 				break;
35593 			case 2:
35594 				enterOuterAlt(_localctx, 2);
35595 				{
35596 				setState(4995);
35597 				createRemoteTableAsSelect();
35598 				}
35599 				break;
35600 			}
35601 		}
35602 		catch (RecognitionException re) {
35603 			_localctx.exception = re;
35604 			_errHandler.reportError(this, re);
35605 			_errHandler.recover(this, re);
35606 		}
35607 		finally {
35608 			exitRule();
35609 		}
35610 		return _localctx;
35611 	}
35612 
35613 	public static class CreateTableAsSelectContext extends ParserRuleContext {
35614 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
35615 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
35616 		public TableNameContext tableName() {
35617 			return getRuleContext(TableNameContext.class,0);
35618 		}
35619 		public WithDistributionOptionContext withDistributionOption() {
35620 			return getRuleContext(WithDistributionOptionContext.class,0);
35621 		}
35622 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35623 		public SelectContext select() {
35624 			return getRuleContext(SelectContext.class,0);
35625 		}
35626 		public OptionQueryHintClauseContext optionQueryHintClause() {
35627 			return getRuleContext(OptionQueryHintClauseContext.class,0);
35628 		}
35629 		public ColumnNamesContext columnNames() {
35630 			return getRuleContext(ColumnNamesContext.class,0);
35631 		}
35632 		public CreateTableAsSelectContext(ParserRuleContext parent, int invokingState) {
35633 			super(parent, invokingState);
35634 		}
35635 		@Override public int getRuleIndex() { return RULE_createTableAsSelect; }
35636 		@Override
35637 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35638 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelect(this);
35639 			else return visitor.visitChildren(this);
35640 		}
35641 	}
35642 
35643 	public final CreateTableAsSelectContext createTableAsSelect() throws RecognitionException {
35644 		CreateTableAsSelectContext _localctx = new CreateTableAsSelectContext(_ctx, getState());
35645 		enterRule(_localctx, 690, RULE_createTableAsSelect);
35646 		int _la;
35647 		try {
35648 			enterOuterAlt(_localctx, 1);
35649 			{
35650 			setState(4998);
35651 			match(CREATE);
35652 			setState(4999);
35653 			match(TABLE);
35654 			setState(5000);
35655 			tableName();
35656 			setState(5002);
35657 			_errHandler.sync(this);
35658 			_la = _input.LA(1);
35659 			if (_la==LP_) {
35660 				{
35661 				setState(5001);
35662 				columnNames();
35663 				}
35664 			}
35665 
35666 			setState(5004);
35667 			withDistributionOption();
35668 			setState(5005);
35669 			match(AS);
35670 			setState(5006);
35671 			select();
35672 			setState(5007);
35673 			optionQueryHintClause();
35674 			}
35675 		}
35676 		catch (RecognitionException re) {
35677 			_localctx.exception = re;
35678 			_errHandler.reportError(this, re);
35679 			_errHandler.recover(this, re);
35680 		}
35681 		finally {
35682 			exitRule();
35683 		}
35684 		return _localctx;
35685 	}
35686 
35687 	public static class CreateRemoteTableAsSelectContext extends ParserRuleContext {
35688 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
35689 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
35690 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
35691 		public TableNameContext tableName() {
35692 			return getRuleContext(TableNameContext.class,0);
35693 		}
35694 		public TerminalNode AT() { return getToken(SQLServerStatementParser.AT, 0); }
35695 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
35696 		public TerminalNode LP_(int i) {
35697 			return getToken(SQLServerStatementParser.LP_, i);
35698 		}
35699 		public StringLiteralsContext stringLiterals() {
35700 			return getRuleContext(StringLiteralsContext.class,0);
35701 		}
35702 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
35703 		public TerminalNode RP_(int i) {
35704 			return getToken(SQLServerStatementParser.RP_, i);
35705 		}
35706 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35707 		public SelectContext select() {
35708 			return getRuleContext(SelectContext.class,0);
35709 		}
35710 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
35711 		public TerminalNode BATCH_SIZE() { return getToken(SQLServerStatementParser.BATCH_SIZE, 0); }
35712 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35713 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
35714 		public CreateRemoteTableAsSelectContext(ParserRuleContext parent, int invokingState) {
35715 			super(parent, invokingState);
35716 		}
35717 		@Override public int getRuleIndex() { return RULE_createRemoteTableAsSelect; }
35718 		@Override
35719 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35720 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRemoteTableAsSelect(this);
35721 			else return visitor.visitChildren(this);
35722 		}
35723 	}
35724 
35725 	public final CreateRemoteTableAsSelectContext createRemoteTableAsSelect() throws RecognitionException {
35726 		CreateRemoteTableAsSelectContext _localctx = new CreateRemoteTableAsSelectContext(_ctx, getState());
35727 		enterRule(_localctx, 692, RULE_createRemoteTableAsSelect);
35728 		int _la;
35729 		try {
35730 			enterOuterAlt(_localctx, 1);
35731 			{
35732 			setState(5009);
35733 			match(CREATE);
35734 			setState(5010);
35735 			match(REMOTE);
35736 			setState(5011);
35737 			match(TABLE);
35738 			setState(5012);
35739 			tableName();
35740 			setState(5013);
35741 			match(AT);
35742 			setState(5014);
35743 			match(LP_);
35744 			setState(5015);
35745 			stringLiterals();
35746 			setState(5016);
35747 			match(RP_);
35748 			setState(5023);
35749 			_errHandler.sync(this);
35750 			_la = _input.LA(1);
35751 			if (_la==WITH) {
35752 				{
35753 				setState(5017);
35754 				match(WITH);
35755 				setState(5018);
35756 				match(LP_);
35757 				setState(5019);
35758 				match(BATCH_SIZE);
35759 				setState(5020);
35760 				match(EQ_);
35761 				setState(5021);
35762 				match(INT_NUM_);
35763 				setState(5022);
35764 				match(RP_);
35765 				}
35766 			}
35767 
35768 			setState(5025);
35769 			match(AS);
35770 			setState(5026);
35771 			select();
35772 			}
35773 		}
35774 		catch (RecognitionException re) {
35775 			_localctx.exception = re;
35776 			_errHandler.reportError(this, re);
35777 			_errHandler.recover(this, re);
35778 		}
35779 		finally {
35780 			exitRule();
35781 		}
35782 		return _localctx;
35783 	}
35784 
35785 	public static class WithDistributionOptionContext extends ParserRuleContext {
35786 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
35787 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35788 		public DistributionOptionContext distributionOption() {
35789 			return getRuleContext(DistributionOptionContext.class,0);
35790 		}
35791 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35792 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35793 		public TerminalNode COMMA_(int i) {
35794 			return getToken(SQLServerStatementParser.COMMA_, i);
35795 		}
35796 		public List<TableOptionContext> tableOption() {
35797 			return getRuleContexts(TableOptionContext.class);
35798 		}
35799 		public TableOptionContext tableOption(int i) {
35800 			return getRuleContext(TableOptionContext.class,i);
35801 		}
35802 		public WithDistributionOptionContext(ParserRuleContext parent, int invokingState) {
35803 			super(parent, invokingState);
35804 		}
35805 		@Override public int getRuleIndex() { return RULE_withDistributionOption; }
35806 		@Override
35807 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35808 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithDistributionOption(this);
35809 			else return visitor.visitChildren(this);
35810 		}
35811 	}
35812 
35813 	public final WithDistributionOptionContext withDistributionOption() throws RecognitionException {
35814 		WithDistributionOptionContext _localctx = new WithDistributionOptionContext(_ctx, getState());
35815 		enterRule(_localctx, 694, RULE_withDistributionOption);
35816 		int _la;
35817 		try {
35818 			enterOuterAlt(_localctx, 1);
35819 			{
35820 			setState(5028);
35821 			match(WITH);
35822 			setState(5029);
35823 			match(LP_);
35824 			setState(5030);
35825 			distributionOption();
35826 			setState(5040);
35827 			_errHandler.sync(this);
35828 			_la = _input.LA(1);
35829 			if (_la==COMMA_) {
35830 				{
35831 				setState(5031);
35832 				match(COMMA_);
35833 				setState(5032);
35834 				tableOption();
35835 				setState(5037);
35836 				_errHandler.sync(this);
35837 				_la = _input.LA(1);
35838 				while (_la==COMMA_) {
35839 					{
35840 					{
35841 					setState(5033);
35842 					match(COMMA_);
35843 					setState(5034);
35844 					tableOption();
35845 					}
35846 					}
35847 					setState(5039);
35848 					_errHandler.sync(this);
35849 					_la = _input.LA(1);
35850 				}
35851 				}
35852 			}
35853 
35854 			setState(5042);
35855 			match(RP_);
35856 			}
35857 		}
35858 		catch (RecognitionException re) {
35859 			_localctx.exception = re;
35860 			_errHandler.reportError(this, re);
35861 			_errHandler.recover(this, re);
35862 		}
35863 		finally {
35864 			exitRule();
35865 		}
35866 		return _localctx;
35867 	}
35868 
35869 	public static class OptionQueryHintClauseContext extends ParserRuleContext {
35870 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
35871 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35872 		public List<QueryHintContext> queryHint() {
35873 			return getRuleContexts(QueryHintContext.class);
35874 		}
35875 		public QueryHintContext queryHint(int i) {
35876 			return getRuleContext(QueryHintContext.class,i);
35877 		}
35878 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35879 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35880 		public TerminalNode COMMA_(int i) {
35881 			return getToken(SQLServerStatementParser.COMMA_, i);
35882 		}
35883 		public OptionQueryHintClauseContext(ParserRuleContext parent, int invokingState) {
35884 			super(parent, invokingState);
35885 		}
35886 		@Override public int getRuleIndex() { return RULE_optionQueryHintClause; }
35887 		@Override
35888 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35889 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionQueryHintClause(this);
35890 			else return visitor.visitChildren(this);
35891 		}
35892 	}
35893 
35894 	public final OptionQueryHintClauseContext optionQueryHintClause() throws RecognitionException {
35895 		OptionQueryHintClauseContext _localctx = new OptionQueryHintClauseContext(_ctx, getState());
35896 		enterRule(_localctx, 696, RULE_optionQueryHintClause);
35897 		int _la;
35898 		try {
35899 			enterOuterAlt(_localctx, 1);
35900 			{
35901 			setState(5056);
35902 			_errHandler.sync(this);
35903 			_la = _input.LA(1);
35904 			if (_la==OPTION) {
35905 				{
35906 				setState(5044);
35907 				match(OPTION);
35908 				setState(5045);
35909 				match(LP_);
35910 				setState(5046);
35911 				queryHint();
35912 				setState(5051);
35913 				_errHandler.sync(this);
35914 				_la = _input.LA(1);
35915 				while (_la==COMMA_) {
35916 					{
35917 					{
35918 					setState(5047);
35919 					match(COMMA_);
35920 					setState(5048);
35921 					queryHint();
35922 					}
35923 					}
35924 					setState(5053);
35925 					_errHandler.sync(this);
35926 					_la = _input.LA(1);
35927 				}
35928 				setState(5054);
35929 				match(RP_);
35930 				}
35931 			}
35932 
35933 			}
35934 		}
35935 		catch (RecognitionException re) {
35936 			_localctx.exception = re;
35937 			_errHandler.reportError(this, re);
35938 			_errHandler.recover(this, re);
35939 		}
35940 		finally {
35941 			exitRule();
35942 		}
35943 		return _localctx;
35944 	}
35945 
35946 	public static class InsertContext extends ParserRuleContext {
35947 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
35948 		public TableNameContext tableName() {
35949 			return getRuleContext(TableNameContext.class,0);
35950 		}
35951 		public InsertDefaultValueContext insertDefaultValue() {
35952 			return getRuleContext(InsertDefaultValueContext.class,0);
35953 		}
35954 		public InsertValuesClauseContext insertValuesClause() {
35955 			return getRuleContext(InsertValuesClauseContext.class,0);
35956 		}
35957 		public InsertSelectClauseContext insertSelectClause() {
35958 			return getRuleContext(InsertSelectClauseContext.class,0);
35959 		}
35960 		public InsertExecClauseContext insertExecClause() {
35961 			return getRuleContext(InsertExecClauseContext.class,0);
35962 		}
35963 		public WithClauseContext withClause() {
35964 			return getRuleContext(WithClauseContext.class,0);
35965 		}
35966 		public TopContext top() {
35967 			return getRuleContext(TopContext.class,0);
35968 		}
35969 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
35970 		public AliasContext alias() {
35971 			return getRuleContext(AliasContext.class,0);
35972 		}
35973 		public WithTableHintContext withTableHint() {
35974 			return getRuleContext(WithTableHintContext.class,0);
35975 		}
35976 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35977 		public InsertContext(ParserRuleContext parent, int invokingState) {
35978 			super(parent, invokingState);
35979 		}
35980 		@Override public int getRuleIndex() { return RULE_insert; }
35981 		@Override
35982 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35983 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsert(this);
35984 			else return visitor.visitChildren(this);
35985 		}
35986 	}
35987 
35988 	public final InsertContext insert() throws RecognitionException {
35989 		InsertContext _localctx = new InsertContext(_ctx, getState());
35990 		enterRule(_localctx, 698, RULE_insert);
35991 		int _la;
35992 		try {
35993 			enterOuterAlt(_localctx, 1);
35994 			{
35995 			setState(5059);
35996 			_errHandler.sync(this);
35997 			_la = _input.LA(1);
35998 			if (_la==WITH) {
35999 				{
36000 				setState(5058);
36001 				withClause();
36002 				}
36003 			}
36004 
36005 			setState(5061);
36006 			match(INSERT);
36007 			setState(5063);
36008 			_errHandler.sync(this);
36009 			switch ( getInterpreter().adaptivePredict(_input,543,_ctx) ) {
36010 			case 1:
36011 				{
36012 				setState(5062);
36013 				top();
36014 				}
36015 				break;
36016 			}
36017 			setState(5066);
36018 			_errHandler.sync(this);
36019 			_la = _input.LA(1);
36020 			if (_la==INTO) {
36021 				{
36022 				setState(5065);
36023 				match(INTO);
36024 				}
36025 			}
36026 
36027 			setState(5068);
36028 			tableName();
36029 			setState(5073);
36030 			_errHandler.sync(this);
36031 			switch ( getInterpreter().adaptivePredict(_input,546,_ctx) ) {
36032 			case 1:
36033 				{
36034 				setState(5070);
36035 				_errHandler.sync(this);
36036 				_la = _input.LA(1);
36037 				if (_la==AS) {
36038 					{
36039 					setState(5069);
36040 					match(AS);
36041 					}
36042 				}
36043 
36044 				setState(5072);
36045 				alias();
36046 				}
36047 				break;
36048 			}
36049 			setState(5076);
36050 			_errHandler.sync(this);
36051 			switch ( getInterpreter().adaptivePredict(_input,547,_ctx) ) {
36052 			case 1:
36053 				{
36054 				setState(5075);
36055 				withTableHint();
36056 				}
36057 				break;
36058 			}
36059 			setState(5082);
36060 			_errHandler.sync(this);
36061 			switch ( getInterpreter().adaptivePredict(_input,548,_ctx) ) {
36062 			case 1:
36063 				{
36064 				setState(5078);
36065 				insertDefaultValue();
36066 				}
36067 				break;
36068 			case 2:
36069 				{
36070 				setState(5079);
36071 				insertValuesClause();
36072 				}
36073 				break;
36074 			case 3:
36075 				{
36076 				setState(5080);
36077 				insertSelectClause();
36078 				}
36079 				break;
36080 			case 4:
36081 				{
36082 				setState(5081);
36083 				insertExecClause();
36084 				}
36085 				break;
36086 			}
36087 			}
36088 		}
36089 		catch (RecognitionException re) {
36090 			_localctx.exception = re;
36091 			_errHandler.reportError(this, re);
36092 			_errHandler.recover(this, re);
36093 		}
36094 		finally {
36095 			exitRule();
36096 		}
36097 		return _localctx;
36098 	}
36099 
36100 	public static class InsertDefaultValueContext extends ParserRuleContext {
36101 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
36102 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
36103 		public ColumnNamesContext columnNames() {
36104 			return getRuleContext(ColumnNamesContext.class,0);
36105 		}
36106 		public OutputClauseContext outputClause() {
36107 			return getRuleContext(OutputClauseContext.class,0);
36108 		}
36109 		public InsertDefaultValueContext(ParserRuleContext parent, int invokingState) {
36110 			super(parent, invokingState);
36111 		}
36112 		@Override public int getRuleIndex() { return RULE_insertDefaultValue; }
36113 		@Override
36114 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36115 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertDefaultValue(this);
36116 			else return visitor.visitChildren(this);
36117 		}
36118 	}
36119 
36120 	public final InsertDefaultValueContext insertDefaultValue() throws RecognitionException {
36121 		InsertDefaultValueContext _localctx = new InsertDefaultValueContext(_ctx, getState());
36122 		enterRule(_localctx, 700, RULE_insertDefaultValue);
36123 		int _la;
36124 		try {
36125 			enterOuterAlt(_localctx, 1);
36126 			{
36127 			setState(5085);
36128 			_errHandler.sync(this);
36129 			_la = _input.LA(1);
36130 			if (_la==LP_) {
36131 				{
36132 				setState(5084);
36133 				columnNames();
36134 				}
36135 			}
36136 
36137 			setState(5088);
36138 			_errHandler.sync(this);
36139 			_la = _input.LA(1);
36140 			if (_la==OUTPUT) {
36141 				{
36142 				setState(5087);
36143 				outputClause();
36144 				}
36145 			}
36146 
36147 			setState(5090);
36148 			match(DEFAULT);
36149 			setState(5091);
36150 			match(VALUES);
36151 			}
36152 		}
36153 		catch (RecognitionException re) {
36154 			_localctx.exception = re;
36155 			_errHandler.reportError(this, re);
36156 			_errHandler.recover(this, re);
36157 		}
36158 		finally {
36159 			exitRule();
36160 		}
36161 		return _localctx;
36162 	}
36163 
36164 	public static class InsertValuesClauseContext extends ParserRuleContext {
36165 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
36166 		public List<AssignmentValuesContext> assignmentValues() {
36167 			return getRuleContexts(AssignmentValuesContext.class);
36168 		}
36169 		public AssignmentValuesContext assignmentValues(int i) {
36170 			return getRuleContext(AssignmentValuesContext.class,i);
36171 		}
36172 		public ColumnNamesContext columnNames() {
36173 			return getRuleContext(ColumnNamesContext.class,0);
36174 		}
36175 		public OutputClauseContext outputClause() {
36176 			return getRuleContext(OutputClauseContext.class,0);
36177 		}
36178 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36179 		public TerminalNode COMMA_(int i) {
36180 			return getToken(SQLServerStatementParser.COMMA_, i);
36181 		}
36182 		public InsertValuesClauseContext(ParserRuleContext parent, int invokingState) {
36183 			super(parent, invokingState);
36184 		}
36185 		@Override public int getRuleIndex() { return RULE_insertValuesClause; }
36186 		@Override
36187 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36188 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertValuesClause(this);
36189 			else return visitor.visitChildren(this);
36190 		}
36191 	}
36192 
36193 	public final InsertValuesClauseContext insertValuesClause() throws RecognitionException {
36194 		InsertValuesClauseContext _localctx = new InsertValuesClauseContext(_ctx, getState());
36195 		enterRule(_localctx, 702, RULE_insertValuesClause);
36196 		int _la;
36197 		try {
36198 			enterOuterAlt(_localctx, 1);
36199 			{
36200 			setState(5094);
36201 			_errHandler.sync(this);
36202 			_la = _input.LA(1);
36203 			if (_la==LP_) {
36204 				{
36205 				setState(5093);
36206 				columnNames();
36207 				}
36208 			}
36209 
36210 			setState(5097);
36211 			_errHandler.sync(this);
36212 			_la = _input.LA(1);
36213 			if (_la==OUTPUT) {
36214 				{
36215 				setState(5096);
36216 				outputClause();
36217 				}
36218 			}
36219 
36220 			setState(5099);
36221 			match(VALUES);
36222 			setState(5100);
36223 			assignmentValues();
36224 			setState(5105);
36225 			_errHandler.sync(this);
36226 			_la = _input.LA(1);
36227 			while (_la==COMMA_) {
36228 				{
36229 				{
36230 				setState(5101);
36231 				match(COMMA_);
36232 				setState(5102);
36233 				assignmentValues();
36234 				}
36235 				}
36236 				setState(5107);
36237 				_errHandler.sync(this);
36238 				_la = _input.LA(1);
36239 			}
36240 			}
36241 		}
36242 		catch (RecognitionException re) {
36243 			_localctx.exception = re;
36244 			_errHandler.reportError(this, re);
36245 			_errHandler.recover(this, re);
36246 		}
36247 		finally {
36248 			exitRule();
36249 		}
36250 		return _localctx;
36251 	}
36252 
36253 	public static class InsertSelectClauseContext extends ParserRuleContext {
36254 		public SelectContext select() {
36255 			return getRuleContext(SelectContext.class,0);
36256 		}
36257 		public ColumnNamesContext columnNames() {
36258 			return getRuleContext(ColumnNamesContext.class,0);
36259 		}
36260 		public OutputClauseContext outputClause() {
36261 			return getRuleContext(OutputClauseContext.class,0);
36262 		}
36263 		public InsertSelectClauseContext(ParserRuleContext parent, int invokingState) {
36264 			super(parent, invokingState);
36265 		}
36266 		@Override public int getRuleIndex() { return RULE_insertSelectClause; }
36267 		@Override
36268 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36269 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertSelectClause(this);
36270 			else return visitor.visitChildren(this);
36271 		}
36272 	}
36273 
36274 	public final InsertSelectClauseContext insertSelectClause() throws RecognitionException {
36275 		InsertSelectClauseContext _localctx = new InsertSelectClauseContext(_ctx, getState());
36276 		enterRule(_localctx, 704, RULE_insertSelectClause);
36277 		int _la;
36278 		try {
36279 			enterOuterAlt(_localctx, 1);
36280 			{
36281 			setState(5109);
36282 			_errHandler.sync(this);
36283 			_la = _input.LA(1);
36284 			if (_la==LP_) {
36285 				{
36286 				setState(5108);
36287 				columnNames();
36288 				}
36289 			}
36290 
36291 			setState(5112);
36292 			_errHandler.sync(this);
36293 			_la = _input.LA(1);
36294 			if (_la==OUTPUT) {
36295 				{
36296 				setState(5111);
36297 				outputClause();
36298 				}
36299 			}
36300 
36301 			setState(5114);
36302 			select();
36303 			}
36304 		}
36305 		catch (RecognitionException re) {
36306 			_localctx.exception = re;
36307 			_errHandler.reportError(this, re);
36308 			_errHandler.recover(this, re);
36309 		}
36310 		finally {
36311 			exitRule();
36312 		}
36313 		return _localctx;
36314 	}
36315 
36316 	public static class InsertExecClauseContext extends ParserRuleContext {
36317 		public ExecContext exec() {
36318 			return getRuleContext(ExecContext.class,0);
36319 		}
36320 		public ColumnNamesContext columnNames() {
36321 			return getRuleContext(ColumnNamesContext.class,0);
36322 		}
36323 		public InsertExecClauseContext(ParserRuleContext parent, int invokingState) {
36324 			super(parent, invokingState);
36325 		}
36326 		@Override public int getRuleIndex() { return RULE_insertExecClause; }
36327 		@Override
36328 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36329 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertExecClause(this);
36330 			else return visitor.visitChildren(this);
36331 		}
36332 	}
36333 
36334 	public final InsertExecClauseContext insertExecClause() throws RecognitionException {
36335 		InsertExecClauseContext _localctx = new InsertExecClauseContext(_ctx, getState());
36336 		enterRule(_localctx, 706, RULE_insertExecClause);
36337 		int _la;
36338 		try {
36339 			enterOuterAlt(_localctx, 1);
36340 			{
36341 			setState(5117);
36342 			_errHandler.sync(this);
36343 			_la = _input.LA(1);
36344 			if (_la==LP_) {
36345 				{
36346 				setState(5116);
36347 				columnNames();
36348 				}
36349 			}
36350 
36351 			setState(5119);
36352 			exec();
36353 			}
36354 		}
36355 		catch (RecognitionException re) {
36356 			_localctx.exception = re;
36357 			_errHandler.reportError(this, re);
36358 			_errHandler.recover(this, re);
36359 		}
36360 		finally {
36361 			exitRule();
36362 		}
36363 		return _localctx;
36364 	}
36365 
36366 	public static class WithTableHintContext extends ParserRuleContext {
36367 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
36368 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36369 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36370 		public List<TableHintLimitedContext> tableHintLimited() {
36371 			return getRuleContexts(TableHintLimitedContext.class);
36372 		}
36373 		public TableHintLimitedContext tableHintLimited(int i) {
36374 			return getRuleContext(TableHintLimitedContext.class,i);
36375 		}
36376 		public WithTableHintContext(ParserRuleContext parent, int invokingState) {
36377 			super(parent, invokingState);
36378 		}
36379 		@Override public int getRuleIndex() { return RULE_withTableHint; }
36380 		@Override
36381 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36382 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithTableHint(this);
36383 			else return visitor.visitChildren(this);
36384 		}
36385 	}
36386 
36387 	public final WithTableHintContext withTableHint() throws RecognitionException {
36388 		WithTableHintContext _localctx = new WithTableHintContext(_ctx, getState());
36389 		enterRule(_localctx, 708, RULE_withTableHint);
36390 		int _la;
36391 		try {
36392 			enterOuterAlt(_localctx, 1);
36393 			{
36394 			setState(5121);
36395 			match(WITH);
36396 			setState(5122);
36397 			match(LP_);
36398 			{
36399 			setState(5124); 
36400 			_errHandler.sync(this);
36401 			_la = _input.LA(1);
36402 			do {
36403 				{
36404 				{
36405 				setState(5123);
36406 				tableHintLimited();
36407 				}
36408 				}
36409 				setState(5126); 
36410 				_errHandler.sync(this);
36411 				_la = _input.LA(1);
36412 			} while ( ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (KEEPIDENTITY - 216)) | (1L << (KEEPDEFAULTS - 216)) | (1L << (HOLDLOCK - 216)) | (1L << (IGNORE_CONSTRAINTS - 216)) | (1L << (IGNORE_TRIGGERS - 216)) | (1L << (NOLOCK - 216)) | (1L << (NOWAIT - 216)) | (1L << (PAGLOCK - 216)) | (1L << (READCOMMITTED - 216)) | (1L << (READCOMMITTEDLOCK - 216)) | (1L << (READPAST - 216)) | (1L << (REPEATABLEREAD - 216)) | (1L << (ROWLOCK - 216)) | (1L << (TABLOCK - 216)) | (1L << (TABLOCKX - 216)) | (1L << (UPDLOCK - 216)) | (1L << (XLOCK - 216)))) != 0) || _la==SNAPSHOT || _la==SERIALIZABLE );
36413 			}
36414 			setState(5128);
36415 			match(RP_);
36416 			}
36417 		}
36418 		catch (RecognitionException re) {
36419 			_localctx.exception = re;
36420 			_errHandler.reportError(this, re);
36421 			_errHandler.recover(this, re);
36422 		}
36423 		finally {
36424 			exitRule();
36425 		}
36426 		return _localctx;
36427 	}
36428 
36429 	public static class ExecContext extends ParserRuleContext {
36430 		public ProcedureNameContext procedureName() {
36431 			return getRuleContext(ProcedureNameContext.class,0);
36432 		}
36433 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
36434 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
36435 		public List<ExprContext> expr() {
36436 			return getRuleContexts(ExprContext.class);
36437 		}
36438 		public ExprContext expr(int i) {
36439 			return getRuleContext(ExprContext.class,i);
36440 		}
36441 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36442 		public TerminalNode COMMA_(int i) {
36443 			return getToken(SQLServerStatementParser.COMMA_, i);
36444 		}
36445 		public ExecContext(ParserRuleContext parent, int invokingState) {
36446 			super(parent, invokingState);
36447 		}
36448 		@Override public int getRuleIndex() { return RULE_exec; }
36449 		@Override
36450 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36451 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExec(this);
36452 			else return visitor.visitChildren(this);
36453 		}
36454 	}
36455 
36456 	public final ExecContext exec() throws RecognitionException {
36457 		ExecContext _localctx = new ExecContext(_ctx, getState());
36458 		enterRule(_localctx, 710, RULE_exec);
36459 		int _la;
36460 		try {
36461 			enterOuterAlt(_localctx, 1);
36462 			{
36463 			setState(5130);
36464 			_la = _input.LA(1);
36465 			if ( !(_la==EXECUTE || _la==EXEC) ) {
36466 			_errHandler.recoverInline(this);
36467 			}
36468 			else {
36469 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
36470 				_errHandler.reportMatch(this);
36471 				consume();
36472 			}
36473 			setState(5131);
36474 			procedureName();
36475 			setState(5140);
36476 			_errHandler.sync(this);
36477 			switch ( getInterpreter().adaptivePredict(_input,559,_ctx) ) {
36478 			case 1:
36479 				{
36480 				setState(5132);
36481 				expr(0);
36482 				setState(5137);
36483 				_errHandler.sync(this);
36484 				_la = _input.LA(1);
36485 				while (_la==COMMA_) {
36486 					{
36487 					{
36488 					setState(5133);
36489 					match(COMMA_);
36490 					setState(5134);
36491 					expr(0);
36492 					}
36493 					}
36494 					setState(5139);
36495 					_errHandler.sync(this);
36496 					_la = _input.LA(1);
36497 				}
36498 				}
36499 				break;
36500 			}
36501 			}
36502 		}
36503 		catch (RecognitionException re) {
36504 			_localctx.exception = re;
36505 			_errHandler.reportError(this, re);
36506 			_errHandler.recover(this, re);
36507 		}
36508 		finally {
36509 			exitRule();
36510 		}
36511 		return _localctx;
36512 	}
36513 
36514 	public static class UpdateContext extends ParserRuleContext {
36515 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
36516 		public TableReferencesContext tableReferences() {
36517 			return getRuleContext(TableReferencesContext.class,0);
36518 		}
36519 		public SetAssignmentsClauseContext setAssignmentsClause() {
36520 			return getRuleContext(SetAssignmentsClauseContext.class,0);
36521 		}
36522 		public WithClauseContext withClause() {
36523 			return getRuleContext(WithClauseContext.class,0);
36524 		}
36525 		public TopContext top() {
36526 			return getRuleContext(TopContext.class,0);
36527 		}
36528 		public WithTableHintContext withTableHint() {
36529 			return getRuleContext(WithTableHintContext.class,0);
36530 		}
36531 		public WhereClauseContext whereClause() {
36532 			return getRuleContext(WhereClauseContext.class,0);
36533 		}
36534 		public OptionHintContext optionHint() {
36535 			return getRuleContext(OptionHintContext.class,0);
36536 		}
36537 		public UpdateContext(ParserRuleContext parent, int invokingState) {
36538 			super(parent, invokingState);
36539 		}
36540 		@Override public int getRuleIndex() { return RULE_update; }
36541 		@Override
36542 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36543 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdate(this);
36544 			else return visitor.visitChildren(this);
36545 		}
36546 	}
36547 
36548 	public final UpdateContext update() throws RecognitionException {
36549 		UpdateContext _localctx = new UpdateContext(_ctx, getState());
36550 		enterRule(_localctx, 712, RULE_update);
36551 		int _la;
36552 		try {
36553 			enterOuterAlt(_localctx, 1);
36554 			{
36555 			setState(5143);
36556 			_errHandler.sync(this);
36557 			_la = _input.LA(1);
36558 			if (_la==WITH) {
36559 				{
36560 				setState(5142);
36561 				withClause();
36562 				}
36563 			}
36564 
36565 			setState(5145);
36566 			match(UPDATE);
36567 			setState(5147);
36568 			_errHandler.sync(this);
36569 			switch ( getInterpreter().adaptivePredict(_input,561,_ctx) ) {
36570 			case 1:
36571 				{
36572 				setState(5146);
36573 				top();
36574 				}
36575 				break;
36576 			}
36577 			setState(5149);
36578 			tableReferences();
36579 			setState(5151);
36580 			_errHandler.sync(this);
36581 			_la = _input.LA(1);
36582 			if (_la==WITH) {
36583 				{
36584 				setState(5150);
36585 				withTableHint();
36586 				}
36587 			}
36588 
36589 			setState(5153);
36590 			setAssignmentsClause();
36591 			setState(5155);
36592 			_errHandler.sync(this);
36593 			_la = _input.LA(1);
36594 			if (_la==WHERE) {
36595 				{
36596 				setState(5154);
36597 				whereClause();
36598 				}
36599 			}
36600 
36601 			setState(5158);
36602 			_errHandler.sync(this);
36603 			_la = _input.LA(1);
36604 			if (_la==OPTION) {
36605 				{
36606 				setState(5157);
36607 				optionHint();
36608 				}
36609 			}
36610 
36611 			}
36612 		}
36613 		catch (RecognitionException re) {
36614 			_localctx.exception = re;
36615 			_errHandler.reportError(this, re);
36616 			_errHandler.recover(this, re);
36617 		}
36618 		finally {
36619 			exitRule();
36620 		}
36621 		return _localctx;
36622 	}
36623 
36624 	public static class AssignmentContext extends ParserRuleContext {
36625 		public ColumnNameContext columnName() {
36626 			return getRuleContext(ColumnNameContext.class,0);
36627 		}
36628 		public AssignmentValueContext assignmentValue() {
36629 			return getRuleContext(AssignmentValueContext.class,0);
36630 		}
36631 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
36632 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
36633 		public AssignmentContext(ParserRuleContext parent, int invokingState) {
36634 			super(parent, invokingState);
36635 		}
36636 		@Override public int getRuleIndex() { return RULE_assignment; }
36637 		@Override
36638 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36639 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignment(this);
36640 			else return visitor.visitChildren(this);
36641 		}
36642 	}
36643 
36644 	public final AssignmentContext assignment() throws RecognitionException {
36645 		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
36646 		enterRule(_localctx, 714, RULE_assignment);
36647 		int _la;
36648 		try {
36649 			enterOuterAlt(_localctx, 1);
36650 			{
36651 			setState(5160);
36652 			columnName();
36653 			setState(5161);
36654 			_la = _input.LA(1);
36655 			if ( !(_la==DOT_ || _la==EQ_) ) {
36656 			_errHandler.recoverInline(this);
36657 			}
36658 			else {
36659 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
36660 				_errHandler.reportMatch(this);
36661 				consume();
36662 			}
36663 			setState(5162);
36664 			assignmentValue();
36665 			}
36666 		}
36667 		catch (RecognitionException re) {
36668 			_localctx.exception = re;
36669 			_errHandler.reportError(this, re);
36670 			_errHandler.recover(this, re);
36671 		}
36672 		finally {
36673 			exitRule();
36674 		}
36675 		return _localctx;
36676 	}
36677 
36678 	public static class SetAssignmentsClauseContext extends ParserRuleContext {
36679 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
36680 		public List<AssignmentContext> assignment() {
36681 			return getRuleContexts(AssignmentContext.class);
36682 		}
36683 		public AssignmentContext assignment(int i) {
36684 			return getRuleContext(AssignmentContext.class,i);
36685 		}
36686 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36687 		public TerminalNode COMMA_(int i) {
36688 			return getToken(SQLServerStatementParser.COMMA_, i);
36689 		}
36690 		public FromClauseContext fromClause() {
36691 			return getRuleContext(FromClauseContext.class,0);
36692 		}
36693 		public SetAssignmentsClauseContext(ParserRuleContext parent, int invokingState) {
36694 			super(parent, invokingState);
36695 		}
36696 		@Override public int getRuleIndex() { return RULE_setAssignmentsClause; }
36697 		@Override
36698 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36699 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetAssignmentsClause(this);
36700 			else return visitor.visitChildren(this);
36701 		}
36702 	}
36703 
36704 	public final SetAssignmentsClauseContext setAssignmentsClause() throws RecognitionException {
36705 		SetAssignmentsClauseContext _localctx = new SetAssignmentsClauseContext(_ctx, getState());
36706 		enterRule(_localctx, 716, RULE_setAssignmentsClause);
36707 		int _la;
36708 		try {
36709 			enterOuterAlt(_localctx, 1);
36710 			{
36711 			setState(5164);
36712 			match(SET);
36713 			setState(5165);
36714 			assignment();
36715 			setState(5170);
36716 			_errHandler.sync(this);
36717 			_la = _input.LA(1);
36718 			while (_la==COMMA_) {
36719 				{
36720 				{
36721 				setState(5166);
36722 				match(COMMA_);
36723 				setState(5167);
36724 				assignment();
36725 				}
36726 				}
36727 				setState(5172);
36728 				_errHandler.sync(this);
36729 				_la = _input.LA(1);
36730 			}
36731 			setState(5174);
36732 			_errHandler.sync(this);
36733 			_la = _input.LA(1);
36734 			if (_la==FROM) {
36735 				{
36736 				setState(5173);
36737 				fromClause();
36738 				}
36739 			}
36740 
36741 			}
36742 		}
36743 		catch (RecognitionException re) {
36744 			_localctx.exception = re;
36745 			_errHandler.reportError(this, re);
36746 			_errHandler.recover(this, re);
36747 		}
36748 		finally {
36749 			exitRule();
36750 		}
36751 		return _localctx;
36752 	}
36753 
36754 	public static class AssignmentValuesContext extends ParserRuleContext {
36755 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36756 		public List<AssignmentValueContext> assignmentValue() {
36757 			return getRuleContexts(AssignmentValueContext.class);
36758 		}
36759 		public AssignmentValueContext assignmentValue(int i) {
36760 			return getRuleContext(AssignmentValueContext.class,i);
36761 		}
36762 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36763 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36764 		public TerminalNode COMMA_(int i) {
36765 			return getToken(SQLServerStatementParser.COMMA_, i);
36766 		}
36767 		public AssignmentValuesContext(ParserRuleContext parent, int invokingState) {
36768 			super(parent, invokingState);
36769 		}
36770 		@Override public int getRuleIndex() { return RULE_assignmentValues; }
36771 		@Override
36772 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36773 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValues(this);
36774 			else return visitor.visitChildren(this);
36775 		}
36776 	}
36777 
36778 	public final AssignmentValuesContext assignmentValues() throws RecognitionException {
36779 		AssignmentValuesContext _localctx = new AssignmentValuesContext(_ctx, getState());
36780 		enterRule(_localctx, 718, RULE_assignmentValues);
36781 		int _la;
36782 		try {
36783 			setState(5189);
36784 			_errHandler.sync(this);
36785 			switch ( getInterpreter().adaptivePredict(_input,568,_ctx) ) {
36786 			case 1:
36787 				enterOuterAlt(_localctx, 1);
36788 				{
36789 				setState(5176);
36790 				match(LP_);
36791 				setState(5177);
36792 				assignmentValue();
36793 				setState(5182);
36794 				_errHandler.sync(this);
36795 				_la = _input.LA(1);
36796 				while (_la==COMMA_) {
36797 					{
36798 					{
36799 					setState(5178);
36800 					match(COMMA_);
36801 					setState(5179);
36802 					assignmentValue();
36803 					}
36804 					}
36805 					setState(5184);
36806 					_errHandler.sync(this);
36807 					_la = _input.LA(1);
36808 				}
36809 				setState(5185);
36810 				match(RP_);
36811 				}
36812 				break;
36813 			case 2:
36814 				enterOuterAlt(_localctx, 2);
36815 				{
36816 				setState(5187);
36817 				match(LP_);
36818 				setState(5188);
36819 				match(RP_);
36820 				}
36821 				break;
36822 			}
36823 		}
36824 		catch (RecognitionException re) {
36825 			_localctx.exception = re;
36826 			_errHandler.reportError(this, re);
36827 			_errHandler.recover(this, re);
36828 		}
36829 		finally {
36830 			exitRule();
36831 		}
36832 		return _localctx;
36833 	}
36834 
36835 	public static class AssignmentValueContext extends ParserRuleContext {
36836 		public ExprContext expr() {
36837 			return getRuleContext(ExprContext.class,0);
36838 		}
36839 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
36840 		public AssignmentValueContext(ParserRuleContext parent, int invokingState) {
36841 			super(parent, invokingState);
36842 		}
36843 		@Override public int getRuleIndex() { return RULE_assignmentValue; }
36844 		@Override
36845 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36846 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValue(this);
36847 			else return visitor.visitChildren(this);
36848 		}
36849 	}
36850 
36851 	public final AssignmentValueContext assignmentValue() throws RecognitionException {
36852 		AssignmentValueContext _localctx = new AssignmentValueContext(_ctx, getState());
36853 		enterRule(_localctx, 720, RULE_assignmentValue);
36854 		try {
36855 			setState(5193);
36856 			_errHandler.sync(this);
36857 			switch (_input.LA(1)) {
36858 			case NOT_:
36859 			case TILDE_:
36860 			case PLUS_:
36861 			case MINUS_:
36862 			case LP_:
36863 			case LBE_:
36864 			case QUESTION_:
36865 			case DOLLAR_:
36866 			case TRUNCATE:
36867 			case SCHEMA:
36868 			case COLUMNS:
36869 			case PRECISION:
36870 			case FUNCTION:
36871 			case TRIGGER:
36872 			case CASE:
36873 			case CAST:
36874 			case TRIM:
36875 			case SUBSTRING:
36876 			case OFF:
36877 			case IF:
36878 			case NOT:
36879 			case NULL:
36880 			case TRUE:
36881 			case FALSE:
36882 			case EXISTS:
36883 			case GROUP:
36884 			case LIMIT:
36885 			case OFFSET:
36886 			case SAVEPOINT:
36887 			case BOOLEAN:
36888 			case CHAR:
36889 			case ARRAY:
36890 			case INTERVAL:
36891 			case DATE:
36892 			case TIME:
36893 			case TIMESTAMP:
36894 			case LOCALTIME:
36895 			case LOCALTIMESTAMP:
36896 			case YEAR:
36897 			case QUARTER:
36898 			case MONTH:
36899 			case WEEK:
36900 			case DAY:
36901 			case SECOND:
36902 			case MICROSECOND:
36903 			case MAX:
36904 			case MIN:
36905 			case SUM:
36906 			case COUNT:
36907 			case AVG:
36908 			case ENABLE:
36909 			case DISABLE:
36910 			case INSTANCE:
36911 			case DO:
36912 			case DEFINER:
36913 			case SQL:
36914 			case CASCADED:
36915 			case LOCAL:
36916 			case NEXT:
36917 			case NAME:
36918 			case INTEGER:
36919 			case TYPE:
36920 			case TEXT:
36921 			case VIEWS:
36922 			case READ_ONLY:
36923 			case DATABASE:
36924 			case RETURNS:
36925 			case DATEPART:
36926 			case PASSWORD:
36927 			case JSON_OBJECT:
36928 			case JSON_ARRAY:
36929 			case FIRST_VALUE:
36930 			case LAST_VALUE:
36931 			case APPROX_PERCENTILE_CONT:
36932 			case APPROX_PERCENTILE_DISC:
36933 			case BINARY:
36934 			case HIDDEN_:
36935 			case MOD:
36936 			case PARTITION:
36937 			case PARTITIONS:
36938 			case TOP:
36939 			case ROW:
36940 			case ROWS:
36941 			case XOR:
36942 			case ALWAYS:
36943 			case ROLE:
36944 			case START:
36945 			case ALGORITHM:
36946 			case AUTO:
36947 			case BLOCKERS:
36948 			case CLUSTERED:
36949 			case NONCLUSTERED:
36950 			case COLUMNSTORE:
36951 			case CONTENT:
36952 			case CONVERT:
36953 			case YEARS:
36954 			case MONTHS:
36955 			case WEEKS:
36956 			case DAYS:
36957 			case MINUTES:
36958 			case DENY:
36959 			case DETERMINISTIC:
36960 			case DISTRIBUTION:
36961 			case DOCUMENT:
36962 			case DURABILITY:
36963 			case ENCRYPTED:
36964 			case FILESTREAM:
36965 			case FILETABLE:
36966 			case FILLFACTOR:
36967 			case FOLLOWING:
36968 			case HASH:
36969 			case HEAP:
36970 			case INBOUND:
36971 			case OUTBOUND:
36972 			case UNBOUNDED:
36973 			case INFINITE:
36974 			case LOGIN:
36975 			case MASKED:
36976 			case MAXDOP:
36977 			case MOVE:
36978 			case NOCHECK:
36979 			case OBJECT:
36980 			case ONLINE:
36981 			case OVER:
36982 			case PAGE:
36983 			case PAUSED:
36984 			case PERIOD:
36985 			case PERSISTED:
36986 			case PRECEDING:
36987 			case RANDOMIZED:
36988 			case RANGE:
36989 			case REBUILD:
36990 			case REPLICATE:
36991 			case REPLICATION:
36992 			case RESUMABLE:
36993 			case ROWGUIDCOL:
36994 			case SAVE:
36995 			case SELF:
36996 			case SPARSE:
36997 			case SWITCH:
36998 			case TRAN:
36999 			case TRANCOUNT:
37000 			case CONTROL:
37001 			case CONCAT:
37002 			case TAKE:
37003 			case OWNERSHIP:
37004 			case DEFINITION:
37005 			case APPLICATION:
37006 			case ASSEMBLY:
37007 			case SYMMETRIC:
37008 			case ASYMMETRIC:
37009 			case SERVER:
37010 			case RECEIVE:
37011 			case CHANGE:
37012 			case TRACE:
37013 			case TRACKING:
37014 			case RESOURCES:
37015 			case SETTINGS:
37016 			case STATE:
37017 			case AVAILABILITY:
37018 			case CREDENTIAL:
37019 			case ENDPOINT:
37020 			case EVENT:
37021 			case NOTIFICATION:
37022 			case LINKED:
37023 			case AUDIT:
37024 			case DDL:
37025 			case XML:
37026 			case IMPERSONATE:
37027 			case SECURABLES:
37028 			case AUTHENTICATE:
37029 			case EXTERNAL:
37030 			case ACCESS:
37031 			case ADMINISTER:
37032 			case BULK:
37033 			case OPERATIONS:
37034 			case UNSAFE:
37035 			case SHUTDOWN:
37036 			case SCOPED:
37037 			case CONFIGURATION:
37038 			case DATASPACE:
37039 			case SERVICE:
37040 			case CERTIFICATE:
37041 			case CONTRACT:
37042 			case ENCRYPTION:
37043 			case MASTER:
37044 			case DATA:
37045 			case SOURCE:
37046 			case FILE:
37047 			case FORMAT:
37048 			case LIBRARY:
37049 			case FULLTEXT:
37050 			case MASK:
37051 			case UNMASK:
37052 			case MESSAGE:
37053 			case REMOTE:
37054 			case BINDING:
37055 			case ROUTE:
37056 			case SECURITY:
37057 			case POLICY:
37058 			case AGGREGATE:
37059 			case QUEUE:
37060 			case RULE:
37061 			case SYNONYM:
37062 			case COLLECTION:
37063 			case SCRIPT:
37064 			case KILL:
37065 			case BACKUP:
37066 			case LOG:
37067 			case SHOWPLAN:
37068 			case SUBSCRIBE:
37069 			case QUERY:
37070 			case NOTIFICATIONS:
37071 			case CHECKPOINT:
37072 			case SEQUENCE:
37073 			case ABORT_AFTER_WAIT:
37074 			case ALLOW_PAGE_LOCKS:
37075 			case ALLOW_ROW_LOCKS:
37076 			case ALL_SPARSE_COLUMNS:
37077 			case BUCKET_COUNT:
37078 			case COLUMNSTORE_ARCHIVE:
37079 			case COLUMN_ENCRYPTION_KEY:
37080 			case COLUMN_SET:
37081 			case COMPRESSION_DELAY:
37082 			case DATABASE_DEAULT:
37083 			case DATA_COMPRESSION:
37084 			case DATA_CONSISTENCY_CHECK:
37085 			case ENCRYPTION_TYPE:
37086 			case SYSTEM_TIME:
37087 			case SYSTEM_VERSIONING:
37088 			case TEXTIMAGE_ON:
37089 			case WAIT_AT_LOW_PRIORITY:
37090 			case STATISTICS_INCREMENTAL:
37091 			case STATISTICS_NORECOMPUTE:
37092 			case ROUND_ROBIN:
37093 			case SCHEMA_AND_DATA:
37094 			case SCHEMA_ONLY:
37095 			case SORT_IN_TEMPDB:
37096 			case IGNORE_DUP_KEY:
37097 			case IMPLICIT_TRANSACTIONS:
37098 			case MAX_DURATION:
37099 			case MEMORY_OPTIMIZED:
37100 			case MIGRATION_STATE:
37101 			case PAD_INDEX:
37102 			case REMOTE_DATA_ARCHIVE:
37103 			case FILESTREAM_ON:
37104 			case FILETABLE_COLLATE_FILENAME:
37105 			case FILETABLE_DIRECTORY:
37106 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
37107 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
37108 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
37109 			case FILTER_PREDICATE:
37110 			case HISTORY_RETENTION_PERIOD:
37111 			case HISTORY_TABLE:
37112 			case LOCK_ESCALATION:
37113 			case DROP_EXISTING:
37114 			case ROW_NUMBER:
37115 			case FIRST:
37116 			case DATETIME2:
37117 			case OUTPUT:
37118 			case INSERTED:
37119 			case DELETED:
37120 			case FILENAME:
37121 			case SIZE:
37122 			case MAXSIZE:
37123 			case FILEGROWTH:
37124 			case UNLIMITED:
37125 			case KB:
37126 			case MB:
37127 			case GB:
37128 			case TB:
37129 			case CONTAINS:
37130 			case MEMORY_OPTIMIZED_DATA:
37131 			case FILEGROUP:
37132 			case NON_TRANSACTED_ACCESS:
37133 			case DB_CHAINING:
37134 			case TRUSTWORTHY:
37135 			case FORWARD_ONLY:
37136 			case KEYSET:
37137 			case FAST_FORWARD:
37138 			case SCROLL_LOCKS:
37139 			case OPTIMISTIC:
37140 			case TYPE_WARNING:
37141 			case SCHEMABINDING:
37142 			case CALLER:
37143 			case INPUT:
37144 			case OWNER:
37145 			case SNAPSHOT:
37146 			case REPEATABLE:
37147 			case SERIALIZABLE:
37148 			case NATIVE_COMPILATION:
37149 			case VIEW_METADATA:
37150 			case INSTEAD:
37151 			case APPEND:
37152 			case INCREMENT:
37153 			case CACHE:
37154 			case MINVALUE:
37155 			case MAXVALUE:
37156 			case RESTART:
37157 			case LOB_COMPACTION:
37158 			case COMPRESS_ALL_ROW_GROUPS:
37159 			case REORGANIZE:
37160 			case RESUME:
37161 			case PAUSE:
37162 			case ABORT:
37163 			case ACCELERATED_DATABASE_RECOVERY:
37164 			case PERSISTENT_VERSION_STORE_FILEGROUP:
37165 			case IMMEDIATE:
37166 			case NO_WAIT:
37167 			case TARGET_RECOVERY_TIME:
37168 			case SECONDS:
37169 			case HONOR_BROKER_PRIORITY:
37170 			case ERROR_BROKER_CONVERSATIONS:
37171 			case NEW_BROKER:
37172 			case DISABLE_BROKER:
37173 			case ENABLE_BROKER:
37174 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
37175 			case READ_COMMITTED_SNAPSHOT:
37176 			case ALLOW_SNAPSHOT_ISOLATION:
37177 			case RECURSIVE_TRIGGERS:
37178 			case QUOTED_IDENTIFIER:
37179 			case NUMERIC_ROUNDABORT:
37180 			case CONCAT_NULL_YIELDS_NULL:
37181 			case COMPATIBILITY_LEVEL:
37182 			case ARITHABORT:
37183 			case ANSI_WARNINGS:
37184 			case ANSI_PADDING:
37185 			case ANSI_NULLS:
37186 			case ANSI_NULL_DEFAULT:
37187 			case PAGE_VERIFY:
37188 			case CHECKSUM:
37189 			case TORN_PAGE_DETECTION:
37190 			case BULK_LOGGED:
37191 			case RECOVERY:
37192 			case TOTAL_EXECUTION_CPU_TIME_MS:
37193 			case TOTAL_COMPILE_CPU_TIME_MS:
37194 			case STALE_CAPTURE_POLICY_THRESHOLD:
37195 			case EXECUTION_COUNT:
37196 			case QUERY_CAPTURE_POLICY:
37197 			case WAIT_STATS_CAPTURE_MODE:
37198 			case MAX_PLANS_PER_QUERY:
37199 			case QUERY_CAPTURE_MODE:
37200 			case SIZE_BASED_CLEANUP_MODE:
37201 			case INTERVAL_LENGTH_MINUTES:
37202 			case MAX_STORAGE_SIZE_MB:
37203 			case DATA_FLUSH_INTERVAL_SECONDS:
37204 			case CLEANUP_POLICY:
37205 			case CUSTOM:
37206 			case STALE_QUERY_THRESHOLD_DAYS:
37207 			case OPERATION_MODE:
37208 			case QUERY_STORE:
37209 			case CURSOR_DEFAULT:
37210 			case GLOBAL:
37211 			case CURSOR_CLOSE_ON_COMMIT:
37212 			case HOURS:
37213 			case CHANGE_RETENTION:
37214 			case AUTO_CLEANUP:
37215 			case CHANGE_TRACKING:
37216 			case AUTOMATIC_TUNING:
37217 			case FORCE_LAST_GOOD_PLAN:
37218 			case AUTO_UPDATE_STATISTICS_ASYNC:
37219 			case AUTO_UPDATE_STATISTICS:
37220 			case AUTO_SHRINK:
37221 			case AUTO_CREATE_STATISTICS:
37222 			case INCREMENTAL:
37223 			case AUTO_CLOSE:
37224 			case DATA_RETENTION:
37225 			case TEMPORAL_HISTORY_RETENTION:
37226 			case EDITION:
37227 			case MIXED_PAGE_ALLOCATION:
37228 			case DISABLED:
37229 			case ALLOWED:
37230 			case HADR:
37231 			case MULTI_USER:
37232 			case RESTRICTED_USER:
37233 			case SINGLE_USER:
37234 			case OFFLINE:
37235 			case EMERGENCY:
37236 			case SUSPEND:
37237 			case DATE_CORRELATION_OPTIMIZATION:
37238 			case ELASTIC_POOL:
37239 			case SERVICE_OBJECTIVE:
37240 			case DATABASE_NAME:
37241 			case ALLOW_CONNECTIONS:
37242 			case GEO:
37243 			case NAMED:
37244 			case DATEFIRST:
37245 			case BACKUP_STORAGE_REDUNDANCY:
37246 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
37247 			case SECONDARY:
37248 			case FAILOVER:
37249 			case DEFAULT_FULLTEXT_LANGUAGE:
37250 			case DEFAULT_LANGUAGE:
37251 			case INLINE:
37252 			case NESTED_TRIGGERS:
37253 			case TRANSFORM_NOISE_WORDS:
37254 			case TWO_DIGIT_YEAR_CUTOFF:
37255 			case PERSISTENT_LOG_BUFFER:
37256 			case DIRECTORY_NAME:
37257 			case DATEFORMAT:
37258 			case DELAYED_DURABILITY:
37259 			case AUTHORIZATION:
37260 			case TRANSFER:
37261 			case PROVIDER:
37262 			case SEARCH:
37263 			case MEMBER:
37264 			case OPENJSON:
37265 			case OPENROWSET:
37266 			case TRY_CAST:
37267 			case TRY_CONVERT:
37268 			case IDENTIFIER_:
37269 			case DELIMITED_IDENTIFIER_:
37270 			case STRING_:
37271 			case NUMBER_:
37272 			case HEX_DIGIT_:
37273 			case BIT_NUM_:
37274 			case NCHAR_TEXT:
37275 				enterOuterAlt(_localctx, 1);
37276 				{
37277 				setState(5191);
37278 				expr(0);
37279 				}
37280 				break;
37281 			case DEFAULT:
37282 				enterOuterAlt(_localctx, 2);
37283 				{
37284 				setState(5192);
37285 				match(DEFAULT);
37286 				}
37287 				break;
37288 			default:
37289 				throw new NoViableAltException(this);
37290 			}
37291 		}
37292 		catch (RecognitionException re) {
37293 			_localctx.exception = re;
37294 			_errHandler.reportError(this, re);
37295 			_errHandler.recover(this, re);
37296 		}
37297 		finally {
37298 			exitRule();
37299 		}
37300 		return _localctx;
37301 	}
37302 
37303 	public static class DeleteContext extends ParserRuleContext {
37304 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
37305 		public SingleTableClauseContext singleTableClause() {
37306 			return getRuleContext(SingleTableClauseContext.class,0);
37307 		}
37308 		public MultipleTablesClauseContext multipleTablesClause() {
37309 			return getRuleContext(MultipleTablesClauseContext.class,0);
37310 		}
37311 		public WithClauseContext withClause() {
37312 			return getRuleContext(WithClauseContext.class,0);
37313 		}
37314 		public TopContext top() {
37315 			return getRuleContext(TopContext.class,0);
37316 		}
37317 		public OutputClauseContext outputClause() {
37318 			return getRuleContext(OutputClauseContext.class,0);
37319 		}
37320 		public WhereClauseContext whereClause() {
37321 			return getRuleContext(WhereClauseContext.class,0);
37322 		}
37323 		public OptionHintContext optionHint() {
37324 			return getRuleContext(OptionHintContext.class,0);
37325 		}
37326 		public DeleteContext(ParserRuleContext parent, int invokingState) {
37327 			super(parent, invokingState);
37328 		}
37329 		@Override public int getRuleIndex() { return RULE_delete; }
37330 		@Override
37331 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37332 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelete(this);
37333 			else return visitor.visitChildren(this);
37334 		}
37335 	}
37336 
37337 	public final DeleteContext delete() throws RecognitionException {
37338 		DeleteContext _localctx = new DeleteContext(_ctx, getState());
37339 		enterRule(_localctx, 722, RULE_delete);
37340 		int _la;
37341 		try {
37342 			enterOuterAlt(_localctx, 1);
37343 			{
37344 			setState(5196);
37345 			_errHandler.sync(this);
37346 			_la = _input.LA(1);
37347 			if (_la==WITH) {
37348 				{
37349 				setState(5195);
37350 				withClause();
37351 				}
37352 			}
37353 
37354 			setState(5198);
37355 			match(DELETE);
37356 			setState(5200);
37357 			_errHandler.sync(this);
37358 			switch ( getInterpreter().adaptivePredict(_input,571,_ctx) ) {
37359 			case 1:
37360 				{
37361 				setState(5199);
37362 				top();
37363 				}
37364 				break;
37365 			}
37366 			setState(5204);
37367 			_errHandler.sync(this);
37368 			switch ( getInterpreter().adaptivePredict(_input,572,_ctx) ) {
37369 			case 1:
37370 				{
37371 				setState(5202);
37372 				singleTableClause();
37373 				}
37374 				break;
37375 			case 2:
37376 				{
37377 				setState(5203);
37378 				multipleTablesClause();
37379 				}
37380 				break;
37381 			}
37382 			setState(5207);
37383 			_errHandler.sync(this);
37384 			_la = _input.LA(1);
37385 			if (_la==OUTPUT) {
37386 				{
37387 				setState(5206);
37388 				outputClause();
37389 				}
37390 			}
37391 
37392 			setState(5210);
37393 			_errHandler.sync(this);
37394 			_la = _input.LA(1);
37395 			if (_la==WHERE) {
37396 				{
37397 				setState(5209);
37398 				whereClause();
37399 				}
37400 			}
37401 
37402 			setState(5213);
37403 			_errHandler.sync(this);
37404 			_la = _input.LA(1);
37405 			if (_la==OPTION) {
37406 				{
37407 				setState(5212);
37408 				optionHint();
37409 				}
37410 			}
37411 
37412 			}
37413 		}
37414 		catch (RecognitionException re) {
37415 			_localctx.exception = re;
37416 			_errHandler.reportError(this, re);
37417 			_errHandler.recover(this, re);
37418 		}
37419 		finally {
37420 			exitRule();
37421 		}
37422 		return _localctx;
37423 	}
37424 
37425 	public static class OptionHintContext extends ParserRuleContext {
37426 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
37427 		public QueryHintContext queryHint() {
37428 			return getRuleContext(QueryHintContext.class,0);
37429 		}
37430 		public OptionHintContext(ParserRuleContext parent, int invokingState) {
37431 			super(parent, invokingState);
37432 		}
37433 		@Override public int getRuleIndex() { return RULE_optionHint; }
37434 		@Override
37435 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37436 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionHint(this);
37437 			else return visitor.visitChildren(this);
37438 		}
37439 	}
37440 
37441 	public final OptionHintContext optionHint() throws RecognitionException {
37442 		OptionHintContext _localctx = new OptionHintContext(_ctx, getState());
37443 		enterRule(_localctx, 724, RULE_optionHint);
37444 		try {
37445 			enterOuterAlt(_localctx, 1);
37446 			{
37447 			setState(5215);
37448 			match(OPTION);
37449 			setState(5216);
37450 			queryHint();
37451 			}
37452 		}
37453 		catch (RecognitionException re) {
37454 			_localctx.exception = re;
37455 			_errHandler.reportError(this, re);
37456 			_errHandler.recover(this, re);
37457 		}
37458 		finally {
37459 			exitRule();
37460 		}
37461 		return _localctx;
37462 	}
37463 
37464 	public static class SingleTableClauseContext extends ParserRuleContext {
37465 		public TableNameContext tableName() {
37466 			return getRuleContext(TableNameContext.class,0);
37467 		}
37468 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
37469 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
37470 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
37471 		public AliasContext alias() {
37472 			return getRuleContext(AliasContext.class,0);
37473 		}
37474 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37475 		public SingleTableClauseContext(ParserRuleContext parent, int invokingState) {
37476 			super(parent, invokingState);
37477 		}
37478 		@Override public int getRuleIndex() { return RULE_singleTableClause; }
37479 		@Override
37480 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37481 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSingleTableClause(this);
37482 			else return visitor.visitChildren(this);
37483 		}
37484 	}
37485 
37486 	public final SingleTableClauseContext singleTableClause() throws RecognitionException {
37487 		SingleTableClauseContext _localctx = new SingleTableClauseContext(_ctx, getState());
37488 		enterRule(_localctx, 726, RULE_singleTableClause);
37489 		int _la;
37490 		try {
37491 			enterOuterAlt(_localctx, 1);
37492 			{
37493 			setState(5219);
37494 			_errHandler.sync(this);
37495 			_la = _input.LA(1);
37496 			if (_la==FROM) {
37497 				{
37498 				setState(5218);
37499 				match(FROM);
37500 				}
37501 			}
37502 
37503 			setState(5222);
37504 			_errHandler.sync(this);
37505 			_la = _input.LA(1);
37506 			if (_la==LP_) {
37507 				{
37508 				setState(5221);
37509 				match(LP_);
37510 				}
37511 			}
37512 
37513 			setState(5224);
37514 			tableName();
37515 			setState(5226);
37516 			_errHandler.sync(this);
37517 			_la = _input.LA(1);
37518 			if (_la==RP_) {
37519 				{
37520 				setState(5225);
37521 				match(RP_);
37522 				}
37523 			}
37524 
37525 			setState(5232);
37526 			_errHandler.sync(this);
37527 			switch ( getInterpreter().adaptivePredict(_input,580,_ctx) ) {
37528 			case 1:
37529 				{
37530 				setState(5229);
37531 				_errHandler.sync(this);
37532 				_la = _input.LA(1);
37533 				if (_la==AS) {
37534 					{
37535 					setState(5228);
37536 					match(AS);
37537 					}
37538 				}
37539 
37540 				setState(5231);
37541 				alias();
37542 				}
37543 				break;
37544 			}
37545 			}
37546 		}
37547 		catch (RecognitionException re) {
37548 			_localctx.exception = re;
37549 			_errHandler.reportError(this, re);
37550 			_errHandler.recover(this, re);
37551 		}
37552 		finally {
37553 			exitRule();
37554 		}
37555 		return _localctx;
37556 	}
37557 
37558 	public static class MultipleTablesClauseContext extends ParserRuleContext {
37559 		public MultipleTableNamesContext multipleTableNames() {
37560 			return getRuleContext(MultipleTableNamesContext.class,0);
37561 		}
37562 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
37563 		public TableReferencesContext tableReferences() {
37564 			return getRuleContext(TableReferencesContext.class,0);
37565 		}
37566 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
37567 		public MultipleTablesClauseContext(ParserRuleContext parent, int invokingState) {
37568 			super(parent, invokingState);
37569 		}
37570 		@Override public int getRuleIndex() { return RULE_multipleTablesClause; }
37571 		@Override
37572 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37573 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTablesClause(this);
37574 			else return visitor.visitChildren(this);
37575 		}
37576 	}
37577 
37578 	public final MultipleTablesClauseContext multipleTablesClause() throws RecognitionException {
37579 		MultipleTablesClauseContext _localctx = new MultipleTablesClauseContext(_ctx, getState());
37580 		enterRule(_localctx, 728, RULE_multipleTablesClause);
37581 		try {
37582 			setState(5243);
37583 			_errHandler.sync(this);
37584 			switch (_input.LA(1)) {
37585 			case DOT_:
37586 			case TRUNCATE:
37587 			case SCHEMA:
37588 			case COLUMNS:
37589 			case PRECISION:
37590 			case FUNCTION:
37591 			case TRIGGER:
37592 			case CAST:
37593 			case TRIM:
37594 			case SUBSTRING:
37595 			case OFF:
37596 			case GROUP:
37597 			case LIMIT:
37598 			case OFFSET:
37599 			case SAVEPOINT:
37600 			case BOOLEAN:
37601 			case ARRAY:
37602 			case DATE:
37603 			case TIMESTAMP:
37604 			case LOCALTIME:
37605 			case LOCALTIMESTAMP:
37606 			case YEAR:
37607 			case QUARTER:
37608 			case MONTH:
37609 			case WEEK:
37610 			case DAY:
37611 			case SECOND:
37612 			case MICROSECOND:
37613 			case MAX:
37614 			case MIN:
37615 			case SUM:
37616 			case COUNT:
37617 			case AVG:
37618 			case ENABLE:
37619 			case DISABLE:
37620 			case INSTANCE:
37621 			case DO:
37622 			case DEFINER:
37623 			case SQL:
37624 			case CASCADED:
37625 			case LOCAL:
37626 			case NEXT:
37627 			case NAME:
37628 			case INTEGER:
37629 			case TYPE:
37630 			case TEXT:
37631 			case VIEWS:
37632 			case READ_ONLY:
37633 			case DATABASE:
37634 			case RETURNS:
37635 			case DATEPART:
37636 			case PASSWORD:
37637 			case BINARY:
37638 			case HIDDEN_:
37639 			case MOD:
37640 			case PARTITION:
37641 			case PARTITIONS:
37642 			case TOP:
37643 			case ROW:
37644 			case ROWS:
37645 			case XOR:
37646 			case ALWAYS:
37647 			case ROLE:
37648 			case START:
37649 			case ALGORITHM:
37650 			case AUTO:
37651 			case BLOCKERS:
37652 			case CLUSTERED:
37653 			case NONCLUSTERED:
37654 			case COLUMNSTORE:
37655 			case CONTENT:
37656 			case YEARS:
37657 			case MONTHS:
37658 			case WEEKS:
37659 			case DAYS:
37660 			case MINUTES:
37661 			case DENY:
37662 			case DETERMINISTIC:
37663 			case DISTRIBUTION:
37664 			case DOCUMENT:
37665 			case DURABILITY:
37666 			case ENCRYPTED:
37667 			case FILESTREAM:
37668 			case FILETABLE:
37669 			case FILLFACTOR:
37670 			case FOLLOWING:
37671 			case HASH:
37672 			case HEAP:
37673 			case INBOUND:
37674 			case OUTBOUND:
37675 			case UNBOUNDED:
37676 			case INFINITE:
37677 			case LOGIN:
37678 			case MASKED:
37679 			case MAXDOP:
37680 			case MOVE:
37681 			case NOCHECK:
37682 			case OBJECT:
37683 			case ONLINE:
37684 			case OVER:
37685 			case PAGE:
37686 			case PAUSED:
37687 			case PERIOD:
37688 			case PERSISTED:
37689 			case PRECEDING:
37690 			case RANDOMIZED:
37691 			case RANGE:
37692 			case REBUILD:
37693 			case REPLICATE:
37694 			case REPLICATION:
37695 			case RESUMABLE:
37696 			case ROWGUIDCOL:
37697 			case SAVE:
37698 			case SELF:
37699 			case SPARSE:
37700 			case SWITCH:
37701 			case TRAN:
37702 			case TRANCOUNT:
37703 			case CONTROL:
37704 			case CONCAT:
37705 			case TAKE:
37706 			case OWNERSHIP:
37707 			case DEFINITION:
37708 			case APPLICATION:
37709 			case ASSEMBLY:
37710 			case SYMMETRIC:
37711 			case ASYMMETRIC:
37712 			case SERVER:
37713 			case RECEIVE:
37714 			case CHANGE:
37715 			case TRACE:
37716 			case TRACKING:
37717 			case RESOURCES:
37718 			case SETTINGS:
37719 			case STATE:
37720 			case AVAILABILITY:
37721 			case CREDENTIAL:
37722 			case ENDPOINT:
37723 			case EVENT:
37724 			case NOTIFICATION:
37725 			case LINKED:
37726 			case AUDIT:
37727 			case DDL:
37728 			case XML:
37729 			case IMPERSONATE:
37730 			case SECURABLES:
37731 			case AUTHENTICATE:
37732 			case EXTERNAL:
37733 			case ACCESS:
37734 			case ADMINISTER:
37735 			case BULK:
37736 			case OPERATIONS:
37737 			case UNSAFE:
37738 			case SHUTDOWN:
37739 			case SCOPED:
37740 			case CONFIGURATION:
37741 			case DATASPACE:
37742 			case SERVICE:
37743 			case CERTIFICATE:
37744 			case CONTRACT:
37745 			case ENCRYPTION:
37746 			case MASTER:
37747 			case DATA:
37748 			case SOURCE:
37749 			case FILE:
37750 			case FORMAT:
37751 			case LIBRARY:
37752 			case FULLTEXT:
37753 			case MASK:
37754 			case UNMASK:
37755 			case MESSAGE:
37756 			case REMOTE:
37757 			case BINDING:
37758 			case ROUTE:
37759 			case SECURITY:
37760 			case POLICY:
37761 			case AGGREGATE:
37762 			case QUEUE:
37763 			case RULE:
37764 			case SYNONYM:
37765 			case COLLECTION:
37766 			case SCRIPT:
37767 			case KILL:
37768 			case BACKUP:
37769 			case LOG:
37770 			case SHOWPLAN:
37771 			case SUBSCRIBE:
37772 			case QUERY:
37773 			case NOTIFICATIONS:
37774 			case CHECKPOINT:
37775 			case SEQUENCE:
37776 			case ABORT_AFTER_WAIT:
37777 			case ALLOW_PAGE_LOCKS:
37778 			case ALLOW_ROW_LOCKS:
37779 			case ALL_SPARSE_COLUMNS:
37780 			case BUCKET_COUNT:
37781 			case COLUMNSTORE_ARCHIVE:
37782 			case COLUMN_ENCRYPTION_KEY:
37783 			case COLUMN_SET:
37784 			case COMPRESSION_DELAY:
37785 			case DATABASE_DEAULT:
37786 			case DATA_COMPRESSION:
37787 			case DATA_CONSISTENCY_CHECK:
37788 			case ENCRYPTION_TYPE:
37789 			case SYSTEM_TIME:
37790 			case SYSTEM_VERSIONING:
37791 			case TEXTIMAGE_ON:
37792 			case WAIT_AT_LOW_PRIORITY:
37793 			case STATISTICS_INCREMENTAL:
37794 			case STATISTICS_NORECOMPUTE:
37795 			case ROUND_ROBIN:
37796 			case SCHEMA_AND_DATA:
37797 			case SCHEMA_ONLY:
37798 			case SORT_IN_TEMPDB:
37799 			case IGNORE_DUP_KEY:
37800 			case IMPLICIT_TRANSACTIONS:
37801 			case MAX_DURATION:
37802 			case MEMORY_OPTIMIZED:
37803 			case MIGRATION_STATE:
37804 			case PAD_INDEX:
37805 			case REMOTE_DATA_ARCHIVE:
37806 			case FILESTREAM_ON:
37807 			case FILETABLE_COLLATE_FILENAME:
37808 			case FILETABLE_DIRECTORY:
37809 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
37810 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
37811 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
37812 			case FILTER_PREDICATE:
37813 			case HISTORY_RETENTION_PERIOD:
37814 			case HISTORY_TABLE:
37815 			case LOCK_ESCALATION:
37816 			case DROP_EXISTING:
37817 			case ROW_NUMBER:
37818 			case FIRST:
37819 			case DATETIME2:
37820 			case OUTPUT:
37821 			case INSERTED:
37822 			case DELETED:
37823 			case FILENAME:
37824 			case SIZE:
37825 			case MAXSIZE:
37826 			case FILEGROWTH:
37827 			case UNLIMITED:
37828 			case KB:
37829 			case MB:
37830 			case GB:
37831 			case TB:
37832 			case CONTAINS:
37833 			case MEMORY_OPTIMIZED_DATA:
37834 			case FILEGROUP:
37835 			case NON_TRANSACTED_ACCESS:
37836 			case DB_CHAINING:
37837 			case TRUSTWORTHY:
37838 			case FORWARD_ONLY:
37839 			case KEYSET:
37840 			case FAST_FORWARD:
37841 			case SCROLL_LOCKS:
37842 			case OPTIMISTIC:
37843 			case TYPE_WARNING:
37844 			case SCHEMABINDING:
37845 			case CALLER:
37846 			case INPUT:
37847 			case OWNER:
37848 			case SNAPSHOT:
37849 			case REPEATABLE:
37850 			case SERIALIZABLE:
37851 			case NATIVE_COMPILATION:
37852 			case VIEW_METADATA:
37853 			case INSTEAD:
37854 			case APPEND:
37855 			case INCREMENT:
37856 			case CACHE:
37857 			case MINVALUE:
37858 			case MAXVALUE:
37859 			case RESTART:
37860 			case LOB_COMPACTION:
37861 			case COMPRESS_ALL_ROW_GROUPS:
37862 			case REORGANIZE:
37863 			case RESUME:
37864 			case PAUSE:
37865 			case ABORT:
37866 			case ACCELERATED_DATABASE_RECOVERY:
37867 			case PERSISTENT_VERSION_STORE_FILEGROUP:
37868 			case IMMEDIATE:
37869 			case NO_WAIT:
37870 			case TARGET_RECOVERY_TIME:
37871 			case SECONDS:
37872 			case HONOR_BROKER_PRIORITY:
37873 			case ERROR_BROKER_CONVERSATIONS:
37874 			case NEW_BROKER:
37875 			case DISABLE_BROKER:
37876 			case ENABLE_BROKER:
37877 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
37878 			case READ_COMMITTED_SNAPSHOT:
37879 			case ALLOW_SNAPSHOT_ISOLATION:
37880 			case RECURSIVE_TRIGGERS:
37881 			case QUOTED_IDENTIFIER:
37882 			case NUMERIC_ROUNDABORT:
37883 			case CONCAT_NULL_YIELDS_NULL:
37884 			case COMPATIBILITY_LEVEL:
37885 			case ARITHABORT:
37886 			case ANSI_WARNINGS:
37887 			case ANSI_PADDING:
37888 			case ANSI_NULLS:
37889 			case ANSI_NULL_DEFAULT:
37890 			case PAGE_VERIFY:
37891 			case CHECKSUM:
37892 			case TORN_PAGE_DETECTION:
37893 			case BULK_LOGGED:
37894 			case RECOVERY:
37895 			case TOTAL_EXECUTION_CPU_TIME_MS:
37896 			case TOTAL_COMPILE_CPU_TIME_MS:
37897 			case STALE_CAPTURE_POLICY_THRESHOLD:
37898 			case EXECUTION_COUNT:
37899 			case QUERY_CAPTURE_POLICY:
37900 			case WAIT_STATS_CAPTURE_MODE:
37901 			case MAX_PLANS_PER_QUERY:
37902 			case QUERY_CAPTURE_MODE:
37903 			case SIZE_BASED_CLEANUP_MODE:
37904 			case INTERVAL_LENGTH_MINUTES:
37905 			case MAX_STORAGE_SIZE_MB:
37906 			case DATA_FLUSH_INTERVAL_SECONDS:
37907 			case CLEANUP_POLICY:
37908 			case CUSTOM:
37909 			case STALE_QUERY_THRESHOLD_DAYS:
37910 			case OPERATION_MODE:
37911 			case QUERY_STORE:
37912 			case CURSOR_DEFAULT:
37913 			case GLOBAL:
37914 			case CURSOR_CLOSE_ON_COMMIT:
37915 			case HOURS:
37916 			case CHANGE_RETENTION:
37917 			case AUTO_CLEANUP:
37918 			case CHANGE_TRACKING:
37919 			case AUTOMATIC_TUNING:
37920 			case FORCE_LAST_GOOD_PLAN:
37921 			case AUTO_UPDATE_STATISTICS_ASYNC:
37922 			case AUTO_UPDATE_STATISTICS:
37923 			case AUTO_SHRINK:
37924 			case AUTO_CREATE_STATISTICS:
37925 			case INCREMENTAL:
37926 			case AUTO_CLOSE:
37927 			case DATA_RETENTION:
37928 			case TEMPORAL_HISTORY_RETENTION:
37929 			case EDITION:
37930 			case MIXED_PAGE_ALLOCATION:
37931 			case DISABLED:
37932 			case ALLOWED:
37933 			case HADR:
37934 			case MULTI_USER:
37935 			case RESTRICTED_USER:
37936 			case SINGLE_USER:
37937 			case OFFLINE:
37938 			case EMERGENCY:
37939 			case SUSPEND:
37940 			case DATE_CORRELATION_OPTIMIZATION:
37941 			case ELASTIC_POOL:
37942 			case SERVICE_OBJECTIVE:
37943 			case DATABASE_NAME:
37944 			case ALLOW_CONNECTIONS:
37945 			case GEO:
37946 			case NAMED:
37947 			case DATEFIRST:
37948 			case BACKUP_STORAGE_REDUNDANCY:
37949 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
37950 			case SECONDARY:
37951 			case FAILOVER:
37952 			case DEFAULT_FULLTEXT_LANGUAGE:
37953 			case DEFAULT_LANGUAGE:
37954 			case INLINE:
37955 			case NESTED_TRIGGERS:
37956 			case TRANSFORM_NOISE_WORDS:
37957 			case TWO_DIGIT_YEAR_CUTOFF:
37958 			case PERSISTENT_LOG_BUFFER:
37959 			case DIRECTORY_NAME:
37960 			case DATEFORMAT:
37961 			case DELAYED_DURABILITY:
37962 			case AUTHORIZATION:
37963 			case TRANSFER:
37964 			case PROVIDER:
37965 			case SEARCH:
37966 			case MEMBER:
37967 			case IDENTIFIER_:
37968 			case DELIMITED_IDENTIFIER_:
37969 				enterOuterAlt(_localctx, 1);
37970 				{
37971 				setState(5234);
37972 				multipleTableNames();
37973 				setState(5235);
37974 				match(FROM);
37975 				setState(5236);
37976 				tableReferences();
37977 				}
37978 				break;
37979 			case FROM:
37980 				enterOuterAlt(_localctx, 2);
37981 				{
37982 				setState(5238);
37983 				match(FROM);
37984 				setState(5239);
37985 				multipleTableNames();
37986 				setState(5240);
37987 				match(USING);
37988 				setState(5241);
37989 				tableReferences();
37990 				}
37991 				break;
37992 			default:
37993 				throw new NoViableAltException(this);
37994 			}
37995 		}
37996 		catch (RecognitionException re) {
37997 			_localctx.exception = re;
37998 			_errHandler.reportError(this, re);
37999 			_errHandler.recover(this, re);
38000 		}
38001 		finally {
38002 			exitRule();
38003 		}
38004 		return _localctx;
38005 	}
38006 
38007 	public static class MultipleTableNamesContext extends ParserRuleContext {
38008 		public List<TableNameContext> tableName() {
38009 			return getRuleContexts(TableNameContext.class);
38010 		}
38011 		public TableNameContext tableName(int i) {
38012 			return getRuleContext(TableNameContext.class,i);
38013 		}
38014 		public List<TerminalNode> DOT_ASTERISK_() { return getTokens(SQLServerStatementParser.DOT_ASTERISK_); }
38015 		public TerminalNode DOT_ASTERISK_(int i) {
38016 			return getToken(SQLServerStatementParser.DOT_ASTERISK_, i);
38017 		}
38018 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38019 		public TerminalNode COMMA_(int i) {
38020 			return getToken(SQLServerStatementParser.COMMA_, i);
38021 		}
38022 		public MultipleTableNamesContext(ParserRuleContext parent, int invokingState) {
38023 			super(parent, invokingState);
38024 		}
38025 		@Override public int getRuleIndex() { return RULE_multipleTableNames; }
38026 		@Override
38027 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38028 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTableNames(this);
38029 			else return visitor.visitChildren(this);
38030 		}
38031 	}
38032 
38033 	public final MultipleTableNamesContext multipleTableNames() throws RecognitionException {
38034 		MultipleTableNamesContext _localctx = new MultipleTableNamesContext(_ctx, getState());
38035 		enterRule(_localctx, 730, RULE_multipleTableNames);
38036 		int _la;
38037 		try {
38038 			enterOuterAlt(_localctx, 1);
38039 			{
38040 			setState(5245);
38041 			tableName();
38042 			setState(5247);
38043 			_errHandler.sync(this);
38044 			_la = _input.LA(1);
38045 			if (_la==DOT_ASTERISK_) {
38046 				{
38047 				setState(5246);
38048 				match(DOT_ASTERISK_);
38049 				}
38050 			}
38051 
38052 			setState(5256);
38053 			_errHandler.sync(this);
38054 			_la = _input.LA(1);
38055 			while (_la==COMMA_) {
38056 				{
38057 				{
38058 				setState(5249);
38059 				match(COMMA_);
38060 				setState(5250);
38061 				tableName();
38062 				setState(5252);
38063 				_errHandler.sync(this);
38064 				_la = _input.LA(1);
38065 				if (_la==DOT_ASTERISK_) {
38066 					{
38067 					setState(5251);
38068 					match(DOT_ASTERISK_);
38069 					}
38070 				}
38071 
38072 				}
38073 				}
38074 				setState(5258);
38075 				_errHandler.sync(this);
38076 				_la = _input.LA(1);
38077 			}
38078 			}
38079 		}
38080 		catch (RecognitionException re) {
38081 			_localctx.exception = re;
38082 			_errHandler.reportError(this, re);
38083 			_errHandler.recover(this, re);
38084 		}
38085 		finally {
38086 			exitRule();
38087 		}
38088 		return _localctx;
38089 	}
38090 
38091 	public static class SelectContext extends ParserRuleContext {
38092 		public AggregationClauseContext aggregationClause() {
38093 			return getRuleContext(AggregationClauseContext.class,0);
38094 		}
38095 		public SelectContext(ParserRuleContext parent, int invokingState) {
38096 			super(parent, invokingState);
38097 		}
38098 		@Override public int getRuleIndex() { return RULE_select; }
38099 		@Override
38100 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38101 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelect(this);
38102 			else return visitor.visitChildren(this);
38103 		}
38104 	}
38105 
38106 	public final SelectContext select() throws RecognitionException {
38107 		SelectContext _localctx = new SelectContext(_ctx, getState());
38108 		enterRule(_localctx, 732, RULE_select);
38109 		try {
38110 			enterOuterAlt(_localctx, 1);
38111 			{
38112 			setState(5259);
38113 			aggregationClause();
38114 			}
38115 		}
38116 		catch (RecognitionException re) {
38117 			_localctx.exception = re;
38118 			_errHandler.reportError(this, re);
38119 			_errHandler.recover(this, re);
38120 		}
38121 		finally {
38122 			exitRule();
38123 		}
38124 		return _localctx;
38125 	}
38126 
38127 	public static class AggregationClauseContext extends ParserRuleContext {
38128 		public List<SelectClauseContext> selectClause() {
38129 			return getRuleContexts(SelectClauseContext.class);
38130 		}
38131 		public SelectClauseContext selectClause(int i) {
38132 			return getRuleContext(SelectClauseContext.class,i);
38133 		}
38134 		public List<TerminalNode> UNION() { return getTokens(SQLServerStatementParser.UNION); }
38135 		public TerminalNode UNION(int i) {
38136 			return getToken(SQLServerStatementParser.UNION, i);
38137 		}
38138 		public List<TerminalNode> EXCEPT() { return getTokens(SQLServerStatementParser.EXCEPT); }
38139 		public TerminalNode EXCEPT(int i) {
38140 			return getToken(SQLServerStatementParser.EXCEPT, i);
38141 		}
38142 		public List<TerminalNode> INTERSECT() { return getTokens(SQLServerStatementParser.INTERSECT); }
38143 		public TerminalNode INTERSECT(int i) {
38144 			return getToken(SQLServerStatementParser.INTERSECT, i);
38145 		}
38146 		public List<TerminalNode> ALL() { return getTokens(SQLServerStatementParser.ALL); }
38147 		public TerminalNode ALL(int i) {
38148 			return getToken(SQLServerStatementParser.ALL, i);
38149 		}
38150 		public AggregationClauseContext(ParserRuleContext parent, int invokingState) {
38151 			super(parent, invokingState);
38152 		}
38153 		@Override public int getRuleIndex() { return RULE_aggregationClause; }
38154 		@Override
38155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationClause(this);
38157 			else return visitor.visitChildren(this);
38158 		}
38159 	}
38160 
38161 	public final AggregationClauseContext aggregationClause() throws RecognitionException {
38162 		AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState());
38163 		enterRule(_localctx, 734, RULE_aggregationClause);
38164 		int _la;
38165 		try {
38166 			enterOuterAlt(_localctx, 1);
38167 			{
38168 			setState(5261);
38169 			selectClause();
38170 			setState(5273);
38171 			_errHandler.sync(this);
38172 			_la = _input.LA(1);
38173 			while (_la==UNION || _la==EXCEPT || _la==INTERSECT) {
38174 				{
38175 				{
38176 				setState(5268);
38177 				_errHandler.sync(this);
38178 				switch (_input.LA(1)) {
38179 				case UNION:
38180 					{
38181 					setState(5262);
38182 					match(UNION);
38183 					setState(5264);
38184 					_errHandler.sync(this);
38185 					_la = _input.LA(1);
38186 					if (_la==ALL) {
38187 						{
38188 						setState(5263);
38189 						match(ALL);
38190 						}
38191 					}
38192 
38193 					}
38194 					break;
38195 				case EXCEPT:
38196 					{
38197 					setState(5266);
38198 					match(EXCEPT);
38199 					}
38200 					break;
38201 				case INTERSECT:
38202 					{
38203 					setState(5267);
38204 					match(INTERSECT);
38205 					}
38206 					break;
38207 				default:
38208 					throw new NoViableAltException(this);
38209 				}
38210 				setState(5270);
38211 				selectClause();
38212 				}
38213 				}
38214 				setState(5275);
38215 				_errHandler.sync(this);
38216 				_la = _input.LA(1);
38217 			}
38218 			}
38219 		}
38220 		catch (RecognitionException re) {
38221 			_localctx.exception = re;
38222 			_errHandler.reportError(this, re);
38223 			_errHandler.recover(this, re);
38224 		}
38225 		finally {
38226 			exitRule();
38227 		}
38228 		return _localctx;
38229 	}
38230 
38231 	public static class SelectClauseContext extends ParserRuleContext {
38232 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
38233 		public ProjectionsContext projections() {
38234 			return getRuleContext(ProjectionsContext.class,0);
38235 		}
38236 		public SelectWithClauseContext selectWithClause() {
38237 			return getRuleContext(SelectWithClauseContext.class,0);
38238 		}
38239 		public DuplicateSpecificationContext duplicateSpecification() {
38240 			return getRuleContext(DuplicateSpecificationContext.class,0);
38241 		}
38242 		public IntoClauseContext intoClause() {
38243 			return getRuleContext(IntoClauseContext.class,0);
38244 		}
38245 		public FromClauseContext fromClause() {
38246 			return getRuleContext(FromClauseContext.class,0);
38247 		}
38248 		public WhereClauseContext whereClause() {
38249 			return getRuleContext(WhereClauseContext.class,0);
38250 		}
38251 		public GroupByClauseContext groupByClause() {
38252 			return getRuleContext(GroupByClauseContext.class,0);
38253 		}
38254 		public HavingClauseContext havingClause() {
38255 			return getRuleContext(HavingClauseContext.class,0);
38256 		}
38257 		public OrderByClauseContext orderByClause() {
38258 			return getRuleContext(OrderByClauseContext.class,0);
38259 		}
38260 		public ForClauseContext forClause() {
38261 			return getRuleContext(ForClauseContext.class,0);
38262 		}
38263 		public SelectClauseContext(ParserRuleContext parent, int invokingState) {
38264 			super(parent, invokingState);
38265 		}
38266 		@Override public int getRuleIndex() { return RULE_selectClause; }
38267 		@Override
38268 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38269 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectClause(this);
38270 			else return visitor.visitChildren(this);
38271 		}
38272 	}
38273 
38274 	public final SelectClauseContext selectClause() throws RecognitionException {
38275 		SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState());
38276 		enterRule(_localctx, 736, RULE_selectClause);
38277 		int _la;
38278 		try {
38279 			enterOuterAlt(_localctx, 1);
38280 			{
38281 			setState(5277);
38282 			_errHandler.sync(this);
38283 			_la = _input.LA(1);
38284 			if (_la==WITH) {
38285 				{
38286 				setState(5276);
38287 				selectWithClause();
38288 				}
38289 			}
38290 
38291 			setState(5279);
38292 			match(SELECT);
38293 			setState(5281);
38294 			_errHandler.sync(this);
38295 			_la = _input.LA(1);
38296 			if (_la==DISTINCT || _la==ALL) {
38297 				{
38298 				setState(5280);
38299 				duplicateSpecification();
38300 				}
38301 			}
38302 
38303 			setState(5283);
38304 			projections();
38305 			setState(5285);
38306 			_errHandler.sync(this);
38307 			_la = _input.LA(1);
38308 			if (_la==INTO) {
38309 				{
38310 				setState(5284);
38311 				intoClause();
38312 				}
38313 			}
38314 
38315 			setState(5288);
38316 			_errHandler.sync(this);
38317 			_la = _input.LA(1);
38318 			if (_la==FROM) {
38319 				{
38320 				setState(5287);
38321 				fromClause();
38322 				}
38323 			}
38324 
38325 			setState(5291);
38326 			_errHandler.sync(this);
38327 			_la = _input.LA(1);
38328 			if (_la==WHERE) {
38329 				{
38330 				setState(5290);
38331 				whereClause();
38332 				}
38333 			}
38334 
38335 			setState(5294);
38336 			_errHandler.sync(this);
38337 			_la = _input.LA(1);
38338 			if (_la==GROUP) {
38339 				{
38340 				setState(5293);
38341 				groupByClause();
38342 				}
38343 			}
38344 
38345 			setState(5297);
38346 			_errHandler.sync(this);
38347 			_la = _input.LA(1);
38348 			if (_la==HAVING) {
38349 				{
38350 				setState(5296);
38351 				havingClause();
38352 				}
38353 			}
38354 
38355 			setState(5300);
38356 			_errHandler.sync(this);
38357 			_la = _input.LA(1);
38358 			if (_la==ORDER) {
38359 				{
38360 				setState(5299);
38361 				orderByClause();
38362 				}
38363 			}
38364 
38365 			setState(5303);
38366 			_errHandler.sync(this);
38367 			switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) {
38368 			case 1:
38369 				{
38370 				setState(5302);
38371 				forClause();
38372 				}
38373 				break;
38374 			}
38375 			}
38376 		}
38377 		catch (RecognitionException re) {
38378 			_localctx.exception = re;
38379 			_errHandler.reportError(this, re);
38380 			_errHandler.recover(this, re);
38381 		}
38382 		finally {
38383 			exitRule();
38384 		}
38385 		return _localctx;
38386 	}
38387 
38388 	public static class DuplicateSpecificationContext extends ParserRuleContext {
38389 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
38390 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
38391 		public DuplicateSpecificationContext(ParserRuleContext parent, int invokingState) {
38392 			super(parent, invokingState);
38393 		}
38394 		@Override public int getRuleIndex() { return RULE_duplicateSpecification; }
38395 		@Override
38396 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38397 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDuplicateSpecification(this);
38398 			else return visitor.visitChildren(this);
38399 		}
38400 	}
38401 
38402 	public final DuplicateSpecificationContext duplicateSpecification() throws RecognitionException {
38403 		DuplicateSpecificationContext _localctx = new DuplicateSpecificationContext(_ctx, getState());
38404 		enterRule(_localctx, 738, RULE_duplicateSpecification);
38405 		int _la;
38406 		try {
38407 			enterOuterAlt(_localctx, 1);
38408 			{
38409 			setState(5305);
38410 			_la = _input.LA(1);
38411 			if ( !(_la==DISTINCT || _la==ALL) ) {
38412 			_errHandler.recoverInline(this);
38413 			}
38414 			else {
38415 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38416 				_errHandler.reportMatch(this);
38417 				consume();
38418 			}
38419 			}
38420 		}
38421 		catch (RecognitionException re) {
38422 			_localctx.exception = re;
38423 			_errHandler.reportError(this, re);
38424 			_errHandler.recover(this, re);
38425 		}
38426 		finally {
38427 			exitRule();
38428 		}
38429 		return _localctx;
38430 	}
38431 
38432 	public static class ProjectionsContext extends ParserRuleContext {
38433 		public List<ProjectionContext> projection() {
38434 			return getRuleContexts(ProjectionContext.class);
38435 		}
38436 		public ProjectionContext projection(int i) {
38437 			return getRuleContext(ProjectionContext.class,i);
38438 		}
38439 		public TopContext top() {
38440 			return getRuleContext(TopContext.class,0);
38441 		}
38442 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38443 		public TerminalNode COMMA_(int i) {
38444 			return getToken(SQLServerStatementParser.COMMA_, i);
38445 		}
38446 		public ProjectionsContext(ParserRuleContext parent, int invokingState) {
38447 			super(parent, invokingState);
38448 		}
38449 		@Override public int getRuleIndex() { return RULE_projections; }
38450 		@Override
38451 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38452 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjections(this);
38453 			else return visitor.visitChildren(this);
38454 		}
38455 	}
38456 
38457 	public final ProjectionsContext projections() throws RecognitionException {
38458 		ProjectionsContext _localctx = new ProjectionsContext(_ctx, getState());
38459 		enterRule(_localctx, 740, RULE_projections);
38460 		int _la;
38461 		try {
38462 			enterOuterAlt(_localctx, 1);
38463 			{
38464 			setState(5312);
38465 			_errHandler.sync(this);
38466 			switch ( getInterpreter().adaptivePredict(_input,598,_ctx) ) {
38467 			case 1:
38468 				{
38469 				setState(5307);
38470 				projection();
38471 				}
38472 				break;
38473 			case 2:
38474 				{
38475 				setState(5308);
38476 				top();
38477 				setState(5310);
38478 				_errHandler.sync(this);
38479 				switch ( getInterpreter().adaptivePredict(_input,597,_ctx) ) {
38480 				case 1:
38481 					{
38482 					setState(5309);
38483 					projection();
38484 					}
38485 					break;
38486 				}
38487 				}
38488 				break;
38489 			}
38490 			setState(5318);
38491 			_errHandler.sync(this);
38492 			_la = _input.LA(1);
38493 			while (_la==COMMA_) {
38494 				{
38495 				{
38496 				setState(5314);
38497 				match(COMMA_);
38498 				setState(5315);
38499 				projection();
38500 				}
38501 				}
38502 				setState(5320);
38503 				_errHandler.sync(this);
38504 				_la = _input.LA(1);
38505 			}
38506 			}
38507 		}
38508 		catch (RecognitionException re) {
38509 			_localctx.exception = re;
38510 			_errHandler.reportError(this, re);
38511 			_errHandler.recover(this, re);
38512 		}
38513 		finally {
38514 			exitRule();
38515 		}
38516 		return _localctx;
38517 	}
38518 
38519 	public static class ProjectionContext extends ParserRuleContext {
38520 		public QualifiedShorthandContext qualifiedShorthand() {
38521 			return getRuleContext(QualifiedShorthandContext.class,0);
38522 		}
38523 		public UnqualifiedShorthandContext unqualifiedShorthand() {
38524 			return getRuleContext(UnqualifiedShorthandContext.class,0);
38525 		}
38526 		public ColumnNameContext columnName() {
38527 			return getRuleContext(ColumnNameContext.class,0);
38528 		}
38529 		public ExprContext expr() {
38530 			return getRuleContext(ExprContext.class,0);
38531 		}
38532 		public AliasContext alias() {
38533 			return getRuleContext(AliasContext.class,0);
38534 		}
38535 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
38536 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38537 		public ProjectionContext(ParserRuleContext parent, int invokingState) {
38538 			super(parent, invokingState);
38539 		}
38540 		@Override public int getRuleIndex() { return RULE_projection; }
38541 		@Override
38542 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38543 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjection(this);
38544 			else return visitor.visitChildren(this);
38545 		}
38546 	}
38547 
38548 	public final ProjectionContext projection() throws RecognitionException {
38549 		ProjectionContext _localctx = new ProjectionContext(_ctx, getState());
38550 		enterRule(_localctx, 742, RULE_projection);
38551 		int _la;
38552 		try {
38553 			setState(5342);
38554 			_errHandler.sync(this);
38555 			switch ( getInterpreter().adaptivePredict(_input,605,_ctx) ) {
38556 			case 1:
38557 				enterOuterAlt(_localctx, 1);
38558 				{
38559 				setState(5321);
38560 				qualifiedShorthand();
38561 				}
38562 				break;
38563 			case 2:
38564 				enterOuterAlt(_localctx, 2);
38565 				{
38566 				setState(5322);
38567 				unqualifiedShorthand();
38568 				}
38569 				break;
38570 			case 3:
38571 				enterOuterAlt(_localctx, 3);
38572 				{
38573 				setState(5326);
38574 				_errHandler.sync(this);
38575 				switch ( getInterpreter().adaptivePredict(_input,600,_ctx) ) {
38576 				case 1:
38577 					{
38578 					setState(5323);
38579 					alias();
38580 					setState(5324);
38581 					match(EQ_);
38582 					}
38583 					break;
38584 				}
38585 				setState(5330);
38586 				_errHandler.sync(this);
38587 				switch ( getInterpreter().adaptivePredict(_input,601,_ctx) ) {
38588 				case 1:
38589 					{
38590 					setState(5328);
38591 					columnName();
38592 					}
38593 					break;
38594 				case 2:
38595 					{
38596 					setState(5329);
38597 					expr(0);
38598 					}
38599 					break;
38600 				}
38601 				}
38602 				break;
38603 			case 4:
38604 				enterOuterAlt(_localctx, 4);
38605 				{
38606 				setState(5334);
38607 				_errHandler.sync(this);
38608 				switch ( getInterpreter().adaptivePredict(_input,602,_ctx) ) {
38609 				case 1:
38610 					{
38611 					setState(5332);
38612 					columnName();
38613 					}
38614 					break;
38615 				case 2:
38616 					{
38617 					setState(5333);
38618 					expr(0);
38619 					}
38620 					break;
38621 				}
38622 				setState(5340);
38623 				_errHandler.sync(this);
38624 				switch ( getInterpreter().adaptivePredict(_input,604,_ctx) ) {
38625 				case 1:
38626 					{
38627 					setState(5337);
38628 					_errHandler.sync(this);
38629 					_la = _input.LA(1);
38630 					if (_la==AS) {
38631 						{
38632 						setState(5336);
38633 						match(AS);
38634 						}
38635 					}
38636 
38637 					setState(5339);
38638 					alias();
38639 					}
38640 					break;
38641 				}
38642 				}
38643 				break;
38644 			}
38645 		}
38646 		catch (RecognitionException re) {
38647 			_localctx.exception = re;
38648 			_errHandler.reportError(this, re);
38649 			_errHandler.recover(this, re);
38650 		}
38651 		finally {
38652 			exitRule();
38653 		}
38654 		return _localctx;
38655 	}
38656 
38657 	public static class TopContext extends ParserRuleContext {
38658 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
38659 		public TopNumContext topNum() {
38660 			return getRuleContext(TopNumContext.class,0);
38661 		}
38662 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
38663 		public TerminalNode LP_(int i) {
38664 			return getToken(SQLServerStatementParser.LP_, i);
38665 		}
38666 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
38667 		public TerminalNode RP_(int i) {
38668 			return getToken(SQLServerStatementParser.RP_, i);
38669 		}
38670 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
38671 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
38672 		public TerminalNode TIES() { return getToken(SQLServerStatementParser.TIES, 0); }
38673 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
38674 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
38675 		public OrderByClauseContext orderByClause() {
38676 			return getRuleContext(OrderByClauseContext.class,0);
38677 		}
38678 		public AliasContext alias() {
38679 			return getRuleContext(AliasContext.class,0);
38680 		}
38681 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38682 		public TopContext(ParserRuleContext parent, int invokingState) {
38683 			super(parent, invokingState);
38684 		}
38685 		@Override public int getRuleIndex() { return RULE_top; }
38686 		@Override
38687 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38688 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTop(this);
38689 			else return visitor.visitChildren(this);
38690 		}
38691 	}
38692 
38693 	public final TopContext top() throws RecognitionException {
38694 		TopContext _localctx = new TopContext(_ctx, getState());
38695 		enterRule(_localctx, 744, RULE_top);
38696 		int _la;
38697 		try {
38698 			enterOuterAlt(_localctx, 1);
38699 			{
38700 			setState(5344);
38701 			match(TOP);
38702 			setState(5346);
38703 			_errHandler.sync(this);
38704 			_la = _input.LA(1);
38705 			if (_la==LP_) {
38706 				{
38707 				setState(5345);
38708 				match(LP_);
38709 				}
38710 			}
38711 
38712 			setState(5348);
38713 			topNum();
38714 			setState(5350);
38715 			_errHandler.sync(this);
38716 			switch ( getInterpreter().adaptivePredict(_input,607,_ctx) ) {
38717 			case 1:
38718 				{
38719 				setState(5349);
38720 				match(RP_);
38721 				}
38722 				break;
38723 			}
38724 			setState(5353);
38725 			_errHandler.sync(this);
38726 			_la = _input.LA(1);
38727 			if (_la==PERCENT) {
38728 				{
38729 				setState(5352);
38730 				match(PERCENT);
38731 				}
38732 			}
38733 
38734 			setState(5357);
38735 			_errHandler.sync(this);
38736 			switch ( getInterpreter().adaptivePredict(_input,609,_ctx) ) {
38737 			case 1:
38738 				{
38739 				setState(5355);
38740 				match(WITH);
38741 				setState(5356);
38742 				match(TIES);
38743 				}
38744 				break;
38745 			}
38746 			setState(5372);
38747 			_errHandler.sync(this);
38748 			switch ( getInterpreter().adaptivePredict(_input,612,_ctx) ) {
38749 			case 1:
38750 				{
38751 				setState(5359);
38752 				match(ROW_NUMBER);
38753 				setState(5360);
38754 				match(LP_);
38755 				setState(5361);
38756 				match(RP_);
38757 				setState(5362);
38758 				match(OVER);
38759 				setState(5363);
38760 				match(LP_);
38761 				setState(5364);
38762 				orderByClause();
38763 				setState(5365);
38764 				match(RP_);
38765 				setState(5370);
38766 				_errHandler.sync(this);
38767 				switch ( getInterpreter().adaptivePredict(_input,611,_ctx) ) {
38768 				case 1:
38769 					{
38770 					setState(5367);
38771 					_errHandler.sync(this);
38772 					_la = _input.LA(1);
38773 					if (_la==AS) {
38774 						{
38775 						setState(5366);
38776 						match(AS);
38777 						}
38778 					}
38779 
38780 					setState(5369);
38781 					alias();
38782 					}
38783 					break;
38784 				}
38785 				}
38786 				break;
38787 			}
38788 			}
38789 		}
38790 		catch (RecognitionException re) {
38791 			_localctx.exception = re;
38792 			_errHandler.reportError(this, re);
38793 			_errHandler.recover(this, re);
38794 		}
38795 		finally {
38796 			exitRule();
38797 		}
38798 		return _localctx;
38799 	}
38800 
38801 	public static class TopNumContext extends ParserRuleContext {
38802 		public NumberLiteralsContext numberLiterals() {
38803 			return getRuleContext(NumberLiteralsContext.class,0);
38804 		}
38805 		public ParameterMarkerContext parameterMarker() {
38806 			return getRuleContext(ParameterMarkerContext.class,0);
38807 		}
38808 		public TopNumContext(ParserRuleContext parent, int invokingState) {
38809 			super(parent, invokingState);
38810 		}
38811 		@Override public int getRuleIndex() { return RULE_topNum; }
38812 		@Override
38813 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38814 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTopNum(this);
38815 			else return visitor.visitChildren(this);
38816 		}
38817 	}
38818 
38819 	public final TopNumContext topNum() throws RecognitionException {
38820 		TopNumContext _localctx = new TopNumContext(_ctx, getState());
38821 		enterRule(_localctx, 746, RULE_topNum);
38822 		try {
38823 			setState(5376);
38824 			_errHandler.sync(this);
38825 			switch (_input.LA(1)) {
38826 			case PLUS_:
38827 			case MINUS_:
38828 			case NUMBER_:
38829 				enterOuterAlt(_localctx, 1);
38830 				{
38831 				setState(5374);
38832 				numberLiterals();
38833 				}
38834 				break;
38835 			case QUESTION_:
38836 				enterOuterAlt(_localctx, 2);
38837 				{
38838 				setState(5375);
38839 				parameterMarker();
38840 				}
38841 				break;
38842 			default:
38843 				throw new NoViableAltException(this);
38844 			}
38845 		}
38846 		catch (RecognitionException re) {
38847 			_localctx.exception = re;
38848 			_errHandler.reportError(this, re);
38849 			_errHandler.recover(this, re);
38850 		}
38851 		finally {
38852 			exitRule();
38853 		}
38854 		return _localctx;
38855 	}
38856 
38857 	public static class UnqualifiedShorthandContext extends ParserRuleContext {
38858 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
38859 		public UnqualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
38860 			super(parent, invokingState);
38861 		}
38862 		@Override public int getRuleIndex() { return RULE_unqualifiedShorthand; }
38863 		@Override
38864 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38865 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnqualifiedShorthand(this);
38866 			else return visitor.visitChildren(this);
38867 		}
38868 	}
38869 
38870 	public final UnqualifiedShorthandContext unqualifiedShorthand() throws RecognitionException {
38871 		UnqualifiedShorthandContext _localctx = new UnqualifiedShorthandContext(_ctx, getState());
38872 		enterRule(_localctx, 748, RULE_unqualifiedShorthand);
38873 		try {
38874 			enterOuterAlt(_localctx, 1);
38875 			{
38876 			setState(5378);
38877 			match(ASTERISK_);
38878 			}
38879 		}
38880 		catch (RecognitionException re) {
38881 			_localctx.exception = re;
38882 			_errHandler.reportError(this, re);
38883 			_errHandler.recover(this, re);
38884 		}
38885 		finally {
38886 			exitRule();
38887 		}
38888 		return _localctx;
38889 	}
38890 
38891 	public static class QualifiedShorthandContext extends ParserRuleContext {
38892 		public IdentifierContext identifier() {
38893 			return getRuleContext(IdentifierContext.class,0);
38894 		}
38895 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
38896 		public QualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
38897 			super(parent, invokingState);
38898 		}
38899 		@Override public int getRuleIndex() { return RULE_qualifiedShorthand; }
38900 		@Override
38901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQualifiedShorthand(this);
38903 			else return visitor.visitChildren(this);
38904 		}
38905 	}
38906 
38907 	public final QualifiedShorthandContext qualifiedShorthand() throws RecognitionException {
38908 		QualifiedShorthandContext _localctx = new QualifiedShorthandContext(_ctx, getState());
38909 		enterRule(_localctx, 750, RULE_qualifiedShorthand);
38910 		try {
38911 			enterOuterAlt(_localctx, 1);
38912 			{
38913 			setState(5380);
38914 			identifier();
38915 			setState(5381);
38916 			match(DOT_ASTERISK_);
38917 			}
38918 		}
38919 		catch (RecognitionException re) {
38920 			_localctx.exception = re;
38921 			_errHandler.reportError(this, re);
38922 			_errHandler.recover(this, re);
38923 		}
38924 		finally {
38925 			exitRule();
38926 		}
38927 		return _localctx;
38928 	}
38929 
38930 	public static class IntoClauseContext extends ParserRuleContext {
38931 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
38932 		public TableNameContext tableName() {
38933 			return getRuleContext(TableNameContext.class,0);
38934 		}
38935 		public IntoClauseContext(ParserRuleContext parent, int invokingState) {
38936 			super(parent, invokingState);
38937 		}
38938 		@Override public int getRuleIndex() { return RULE_intoClause; }
38939 		@Override
38940 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38941 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIntoClause(this);
38942 			else return visitor.visitChildren(this);
38943 		}
38944 	}
38945 
38946 	public final IntoClauseContext intoClause() throws RecognitionException {
38947 		IntoClauseContext _localctx = new IntoClauseContext(_ctx, getState());
38948 		enterRule(_localctx, 752, RULE_intoClause);
38949 		try {
38950 			enterOuterAlt(_localctx, 1);
38951 			{
38952 			setState(5383);
38953 			match(INTO);
38954 			setState(5384);
38955 			tableName();
38956 			}
38957 		}
38958 		catch (RecognitionException re) {
38959 			_localctx.exception = re;
38960 			_errHandler.reportError(this, re);
38961 			_errHandler.recover(this, re);
38962 		}
38963 		finally {
38964 			exitRule();
38965 		}
38966 		return _localctx;
38967 	}
38968 
38969 	public static class FromClauseContext extends ParserRuleContext {
38970 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
38971 		public TableReferencesContext tableReferences() {
38972 			return getRuleContext(TableReferencesContext.class,0);
38973 		}
38974 		public FromClauseContext(ParserRuleContext parent, int invokingState) {
38975 			super(parent, invokingState);
38976 		}
38977 		@Override public int getRuleIndex() { return RULE_fromClause; }
38978 		@Override
38979 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38980 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFromClause(this);
38981 			else return visitor.visitChildren(this);
38982 		}
38983 	}
38984 
38985 	public final FromClauseContext fromClause() throws RecognitionException {
38986 		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
38987 		enterRule(_localctx, 754, RULE_fromClause);
38988 		try {
38989 			enterOuterAlt(_localctx, 1);
38990 			{
38991 			setState(5386);
38992 			match(FROM);
38993 			setState(5387);
38994 			tableReferences();
38995 			}
38996 		}
38997 		catch (RecognitionException re) {
38998 			_localctx.exception = re;
38999 			_errHandler.reportError(this, re);
39000 			_errHandler.recover(this, re);
39001 		}
39002 		finally {
39003 			exitRule();
39004 		}
39005 		return _localctx;
39006 	}
39007 
39008 	public static class TableReferencesContext extends ParserRuleContext {
39009 		public List<TableReferenceContext> tableReference() {
39010 			return getRuleContexts(TableReferenceContext.class);
39011 		}
39012 		public TableReferenceContext tableReference(int i) {
39013 			return getRuleContext(TableReferenceContext.class,i);
39014 		}
39015 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39016 		public TerminalNode COMMA_(int i) {
39017 			return getToken(SQLServerStatementParser.COMMA_, i);
39018 		}
39019 		public TableReferencesContext(ParserRuleContext parent, int invokingState) {
39020 			super(parent, invokingState);
39021 		}
39022 		@Override public int getRuleIndex() { return RULE_tableReferences; }
39023 		@Override
39024 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39025 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReferences(this);
39026 			else return visitor.visitChildren(this);
39027 		}
39028 	}
39029 
39030 	public final TableReferencesContext tableReferences() throws RecognitionException {
39031 		TableReferencesContext _localctx = new TableReferencesContext(_ctx, getState());
39032 		enterRule(_localctx, 756, RULE_tableReferences);
39033 		int _la;
39034 		try {
39035 			enterOuterAlt(_localctx, 1);
39036 			{
39037 			setState(5389);
39038 			tableReference();
39039 			setState(5394);
39040 			_errHandler.sync(this);
39041 			_la = _input.LA(1);
39042 			while (_la==COMMA_) {
39043 				{
39044 				{
39045 				setState(5390);
39046 				match(COMMA_);
39047 				setState(5391);
39048 				tableReference();
39049 				}
39050 				}
39051 				setState(5396);
39052 				_errHandler.sync(this);
39053 				_la = _input.LA(1);
39054 			}
39055 			}
39056 		}
39057 		catch (RecognitionException re) {
39058 			_localctx.exception = re;
39059 			_errHandler.reportError(this, re);
39060 			_errHandler.recover(this, re);
39061 		}
39062 		finally {
39063 			exitRule();
39064 		}
39065 		return _localctx;
39066 	}
39067 
39068 	public static class TableReferenceContext extends ParserRuleContext {
39069 		public TableFactorContext tableFactor() {
39070 			return getRuleContext(TableFactorContext.class,0);
39071 		}
39072 		public List<JoinedTableContext> joinedTable() {
39073 			return getRuleContexts(JoinedTableContext.class);
39074 		}
39075 		public JoinedTableContext joinedTable(int i) {
39076 			return getRuleContext(JoinedTableContext.class,i);
39077 		}
39078 		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
39079 			super(parent, invokingState);
39080 		}
39081 		@Override public int getRuleIndex() { return RULE_tableReference; }
39082 		@Override
39083 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39084 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReference(this);
39085 			else return visitor.visitChildren(this);
39086 		}
39087 	}
39088 
39089 	public final TableReferenceContext tableReference() throws RecognitionException {
39090 		TableReferenceContext _localctx = new TableReferenceContext(_ctx, getState());
39091 		enterRule(_localctx, 758, RULE_tableReference);
39092 		int _la;
39093 		try {
39094 			enterOuterAlt(_localctx, 1);
39095 			{
39096 			setState(5397);
39097 			tableFactor();
39098 			setState(5401);
39099 			_errHandler.sync(this);
39100 			_la = _input.LA(1);
39101 			while (((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (NATURAL - 86)) | (1L << (JOIN - 86)) | (1L << (FULL - 86)) | (1L << (INNER - 86)) | (1L << (OUTER - 86)) | (1L << (LEFT - 86)) | (1L << (RIGHT - 86)) | (1L << (CROSS - 86)))) != 0)) {
39102 				{
39103 				{
39104 				setState(5398);
39105 				joinedTable();
39106 				}
39107 				}
39108 				setState(5403);
39109 				_errHandler.sync(this);
39110 				_la = _input.LA(1);
39111 			}
39112 			}
39113 		}
39114 		catch (RecognitionException re) {
39115 			_localctx.exception = re;
39116 			_errHandler.reportError(this, re);
39117 			_errHandler.recover(this, re);
39118 		}
39119 		finally {
39120 			exitRule();
39121 		}
39122 		return _localctx;
39123 	}
39124 
39125 	public static class TableFactorContext extends ParserRuleContext {
39126 		public TableNameContext tableName() {
39127 			return getRuleContext(TableNameContext.class,0);
39128 		}
39129 		public AliasContext alias() {
39130 			return getRuleContext(AliasContext.class,0);
39131 		}
39132 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
39133 		public SubqueryContext subquery() {
39134 			return getRuleContext(SubqueryContext.class,0);
39135 		}
39136 		public ColumnNamesContext columnNames() {
39137 			return getRuleContext(ColumnNamesContext.class,0);
39138 		}
39139 		public ExprContext expr() {
39140 			return getRuleContext(ExprContext.class,0);
39141 		}
39142 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39143 		public TableReferencesContext tableReferences() {
39144 			return getRuleContext(TableReferencesContext.class,0);
39145 		}
39146 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39147 		public TableFactorContext(ParserRuleContext parent, int invokingState) {
39148 			super(parent, invokingState);
39149 		}
39150 		@Override public int getRuleIndex() { return RULE_tableFactor; }
39151 		@Override
39152 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39153 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableFactor(this);
39154 			else return visitor.visitChildren(this);
39155 		}
39156 	}
39157 
39158 	public final TableFactorContext tableFactor() throws RecognitionException {
39159 		TableFactorContext _localctx = new TableFactorContext(_ctx, getState());
39160 		enterRule(_localctx, 760, RULE_tableFactor);
39161 		int _la;
39162 		try {
39163 			setState(5430);
39164 			_errHandler.sync(this);
39165 			switch ( getInterpreter().adaptivePredict(_input,622,_ctx) ) {
39166 			case 1:
39167 				enterOuterAlt(_localctx, 1);
39168 				{
39169 				setState(5404);
39170 				tableName();
39171 				setState(5409);
39172 				_errHandler.sync(this);
39173 				switch ( getInterpreter().adaptivePredict(_input,617,_ctx) ) {
39174 				case 1:
39175 					{
39176 					setState(5406);
39177 					_errHandler.sync(this);
39178 					_la = _input.LA(1);
39179 					if (_la==AS) {
39180 						{
39181 						setState(5405);
39182 						match(AS);
39183 						}
39184 					}
39185 
39186 					setState(5408);
39187 					alias();
39188 					}
39189 					break;
39190 				}
39191 				}
39192 				break;
39193 			case 2:
39194 				enterOuterAlt(_localctx, 2);
39195 				{
39196 				setState(5411);
39197 				subquery();
39198 				setState(5413);
39199 				_errHandler.sync(this);
39200 				_la = _input.LA(1);
39201 				if (_la==AS) {
39202 					{
39203 					setState(5412);
39204 					match(AS);
39205 					}
39206 				}
39207 
39208 				setState(5415);
39209 				alias();
39210 				setState(5417);
39211 				_errHandler.sync(this);
39212 				_la = _input.LA(1);
39213 				if (_la==LP_) {
39214 					{
39215 					setState(5416);
39216 					columnNames();
39217 					}
39218 				}
39219 
39220 				}
39221 				break;
39222 			case 3:
39223 				enterOuterAlt(_localctx, 3);
39224 				{
39225 				setState(5419);
39226 				expr(0);
39227 				setState(5424);
39228 				_errHandler.sync(this);
39229 				switch ( getInterpreter().adaptivePredict(_input,621,_ctx) ) {
39230 				case 1:
39231 					{
39232 					setState(5421);
39233 					_errHandler.sync(this);
39234 					_la = _input.LA(1);
39235 					if (_la==AS) {
39236 						{
39237 						setState(5420);
39238 						match(AS);
39239 						}
39240 					}
39241 
39242 					setState(5423);
39243 					alias();
39244 					}
39245 					break;
39246 				}
39247 				}
39248 				break;
39249 			case 4:
39250 				enterOuterAlt(_localctx, 4);
39251 				{
39252 				setState(5426);
39253 				match(LP_);
39254 				setState(5427);
39255 				tableReferences();
39256 				setState(5428);
39257 				match(RP_);
39258 				}
39259 				break;
39260 			}
39261 		}
39262 		catch (RecognitionException re) {
39263 			_localctx.exception = re;
39264 			_errHandler.reportError(this, re);
39265 			_errHandler.recover(this, re);
39266 		}
39267 		finally {
39268 			exitRule();
39269 		}
39270 		return _localctx;
39271 	}
39272 
39273 	public static class JoinedTableContext extends ParserRuleContext {
39274 		public TableFactorContext tableFactor() {
39275 			return getRuleContext(TableFactorContext.class,0);
39276 		}
39277 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
39278 		public TerminalNode NATURAL() { return getToken(SQLServerStatementParser.NATURAL, 0); }
39279 		public JoinSpecificationContext joinSpecification() {
39280 			return getRuleContext(JoinSpecificationContext.class,0);
39281 		}
39282 		public TerminalNode INNER() { return getToken(SQLServerStatementParser.INNER, 0); }
39283 		public TerminalNode CROSS() { return getToken(SQLServerStatementParser.CROSS, 0); }
39284 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
39285 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
39286 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
39287 		public TerminalNode OUTER() { return getToken(SQLServerStatementParser.OUTER, 0); }
39288 		public TerminalNode APPLY() { return getToken(SQLServerStatementParser.APPLY, 0); }
39289 		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
39290 			super(parent, invokingState);
39291 		}
39292 		@Override public int getRuleIndex() { return RULE_joinedTable; }
39293 		@Override
39294 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39295 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinedTable(this);
39296 			else return visitor.visitChildren(this);
39297 		}
39298 	}
39299 
39300 	public final JoinedTableContext joinedTable() throws RecognitionException {
39301 		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
39302 		enterRule(_localctx, 762, RULE_joinedTable);
39303 		int _la;
39304 		try {
39305 			setState(5462);
39306 			_errHandler.sync(this);
39307 			switch ( getInterpreter().adaptivePredict(_input,630,_ctx) ) {
39308 			case 1:
39309 				enterOuterAlt(_localctx, 1);
39310 				{
39311 				setState(5433);
39312 				_errHandler.sync(this);
39313 				_la = _input.LA(1);
39314 				if (_la==NATURAL) {
39315 					{
39316 					setState(5432);
39317 					match(NATURAL);
39318 					}
39319 				}
39320 
39321 				{
39322 				setState(5436);
39323 				_errHandler.sync(this);
39324 				_la = _input.LA(1);
39325 				if (_la==INNER || _la==CROSS) {
39326 					{
39327 					setState(5435);
39328 					_la = _input.LA(1);
39329 					if ( !(_la==INNER || _la==CROSS) ) {
39330 					_errHandler.recoverInline(this);
39331 					}
39332 					else {
39333 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39334 						_errHandler.reportMatch(this);
39335 						consume();
39336 					}
39337 					}
39338 				}
39339 
39340 				setState(5438);
39341 				match(JOIN);
39342 				}
39343 				setState(5440);
39344 				tableFactor();
39345 				setState(5442);
39346 				_errHandler.sync(this);
39347 				_la = _input.LA(1);
39348 				if (_la==USING || _la==ON) {
39349 					{
39350 					setState(5441);
39351 					joinSpecification();
39352 					}
39353 				}
39354 
39355 				}
39356 				break;
39357 			case 2:
39358 				enterOuterAlt(_localctx, 2);
39359 				{
39360 				setState(5445);
39361 				_errHandler.sync(this);
39362 				_la = _input.LA(1);
39363 				if (_la==NATURAL) {
39364 					{
39365 					setState(5444);
39366 					match(NATURAL);
39367 					}
39368 				}
39369 
39370 				setState(5447);
39371 				_la = _input.LA(1);
39372 				if ( !(((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & ((1L << (FULL - 88)) | (1L << (LEFT - 88)) | (1L << (RIGHT - 88)))) != 0)) ) {
39373 				_errHandler.recoverInline(this);
39374 				}
39375 				else {
39376 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39377 					_errHandler.reportMatch(this);
39378 					consume();
39379 				}
39380 				setState(5449);
39381 				_errHandler.sync(this);
39382 				_la = _input.LA(1);
39383 				if (_la==OUTER) {
39384 					{
39385 					setState(5448);
39386 					match(OUTER);
39387 					}
39388 				}
39389 
39390 				setState(5451);
39391 				match(JOIN);
39392 				setState(5452);
39393 				tableFactor();
39394 				setState(5454);
39395 				_errHandler.sync(this);
39396 				_la = _input.LA(1);
39397 				if (_la==USING || _la==ON) {
39398 					{
39399 					setState(5453);
39400 					joinSpecification();
39401 					}
39402 				}
39403 
39404 				}
39405 				break;
39406 			case 3:
39407 				enterOuterAlt(_localctx, 3);
39408 				{
39409 				setState(5456);
39410 				_la = _input.LA(1);
39411 				if ( !(_la==OUTER || _la==CROSS) ) {
39412 				_errHandler.recoverInline(this);
39413 				}
39414 				else {
39415 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39416 					_errHandler.reportMatch(this);
39417 					consume();
39418 				}
39419 				setState(5457);
39420 				match(APPLY);
39421 				setState(5458);
39422 				tableFactor();
39423 				setState(5460);
39424 				_errHandler.sync(this);
39425 				_la = _input.LA(1);
39426 				if (_la==USING || _la==ON) {
39427 					{
39428 					setState(5459);
39429 					joinSpecification();
39430 					}
39431 				}
39432 
39433 				}
39434 				break;
39435 			}
39436 		}
39437 		catch (RecognitionException re) {
39438 			_localctx.exception = re;
39439 			_errHandler.reportError(this, re);
39440 			_errHandler.recover(this, re);
39441 		}
39442 		finally {
39443 			exitRule();
39444 		}
39445 		return _localctx;
39446 	}
39447 
39448 	public static class JoinSpecificationContext extends ParserRuleContext {
39449 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
39450 		public ExprContext expr() {
39451 			return getRuleContext(ExprContext.class,0);
39452 		}
39453 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
39454 		public ColumnNamesContext columnNames() {
39455 			return getRuleContext(ColumnNamesContext.class,0);
39456 		}
39457 		public JoinSpecificationContext(ParserRuleContext parent, int invokingState) {
39458 			super(parent, invokingState);
39459 		}
39460 		@Override public int getRuleIndex() { return RULE_joinSpecification; }
39461 		@Override
39462 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39463 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinSpecification(this);
39464 			else return visitor.visitChildren(this);
39465 		}
39466 	}
39467 
39468 	public final JoinSpecificationContext joinSpecification() throws RecognitionException {
39469 		JoinSpecificationContext _localctx = new JoinSpecificationContext(_ctx, getState());
39470 		enterRule(_localctx, 764, RULE_joinSpecification);
39471 		try {
39472 			setState(5468);
39473 			_errHandler.sync(this);
39474 			switch (_input.LA(1)) {
39475 			case ON:
39476 				enterOuterAlt(_localctx, 1);
39477 				{
39478 				setState(5464);
39479 				match(ON);
39480 				setState(5465);
39481 				expr(0);
39482 				}
39483 				break;
39484 			case USING:
39485 				enterOuterAlt(_localctx, 2);
39486 				{
39487 				setState(5466);
39488 				match(USING);
39489 				setState(5467);
39490 				columnNames();
39491 				}
39492 				break;
39493 			default:
39494 				throw new NoViableAltException(this);
39495 			}
39496 		}
39497 		catch (RecognitionException re) {
39498 			_localctx.exception = re;
39499 			_errHandler.reportError(this, re);
39500 			_errHandler.recover(this, re);
39501 		}
39502 		finally {
39503 			exitRule();
39504 		}
39505 		return _localctx;
39506 	}
39507 
39508 	public static class WhereClauseContext extends ParserRuleContext {
39509 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
39510 		public ExprContext expr() {
39511 			return getRuleContext(ExprContext.class,0);
39512 		}
39513 		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
39514 			super(parent, invokingState);
39515 		}
39516 		@Override public int getRuleIndex() { return RULE_whereClause; }
39517 		@Override
39518 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39519 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWhereClause(this);
39520 			else return visitor.visitChildren(this);
39521 		}
39522 	}
39523 
39524 	public final WhereClauseContext whereClause() throws RecognitionException {
39525 		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
39526 		enterRule(_localctx, 766, RULE_whereClause);
39527 		try {
39528 			enterOuterAlt(_localctx, 1);
39529 			{
39530 			setState(5470);
39531 			match(WHERE);
39532 			setState(5471);
39533 			expr(0);
39534 			}
39535 		}
39536 		catch (RecognitionException re) {
39537 			_localctx.exception = re;
39538 			_errHandler.reportError(this, re);
39539 			_errHandler.recover(this, re);
39540 		}
39541 		finally {
39542 			exitRule();
39543 		}
39544 		return _localctx;
39545 	}
39546 
39547 	public static class GroupByClauseContext extends ParserRuleContext {
39548 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
39549 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
39550 		public List<OrderByItemContext> orderByItem() {
39551 			return getRuleContexts(OrderByItemContext.class);
39552 		}
39553 		public OrderByItemContext orderByItem(int i) {
39554 			return getRuleContext(OrderByItemContext.class,i);
39555 		}
39556 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39557 		public TerminalNode COMMA_(int i) {
39558 			return getToken(SQLServerStatementParser.COMMA_, i);
39559 		}
39560 		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
39561 			super(parent, invokingState);
39562 		}
39563 		@Override public int getRuleIndex() { return RULE_groupByClause; }
39564 		@Override
39565 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39566 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGroupByClause(this);
39567 			else return visitor.visitChildren(this);
39568 		}
39569 	}
39570 
39571 	public final GroupByClauseContext groupByClause() throws RecognitionException {
39572 		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
39573 		enterRule(_localctx, 768, RULE_groupByClause);
39574 		int _la;
39575 		try {
39576 			enterOuterAlt(_localctx, 1);
39577 			{
39578 			setState(5473);
39579 			match(GROUP);
39580 			setState(5474);
39581 			match(BY);
39582 			setState(5475);
39583 			orderByItem();
39584 			setState(5480);
39585 			_errHandler.sync(this);
39586 			_la = _input.LA(1);
39587 			while (_la==COMMA_) {
39588 				{
39589 				{
39590 				setState(5476);
39591 				match(COMMA_);
39592 				setState(5477);
39593 				orderByItem();
39594 				}
39595 				}
39596 				setState(5482);
39597 				_errHandler.sync(this);
39598 				_la = _input.LA(1);
39599 			}
39600 			}
39601 		}
39602 		catch (RecognitionException re) {
39603 			_localctx.exception = re;
39604 			_errHandler.reportError(this, re);
39605 			_errHandler.recover(this, re);
39606 		}
39607 		finally {
39608 			exitRule();
39609 		}
39610 		return _localctx;
39611 	}
39612 
39613 	public static class HavingClauseContext extends ParserRuleContext {
39614 		public TerminalNode HAVING() { return getToken(SQLServerStatementParser.HAVING, 0); }
39615 		public ExprContext expr() {
39616 			return getRuleContext(ExprContext.class,0);
39617 		}
39618 		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
39619 			super(parent, invokingState);
39620 		}
39621 		@Override public int getRuleIndex() { return RULE_havingClause; }
39622 		@Override
39623 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39624 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHavingClause(this);
39625 			else return visitor.visitChildren(this);
39626 		}
39627 	}
39628 
39629 	public final HavingClauseContext havingClause() throws RecognitionException {
39630 		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
39631 		enterRule(_localctx, 770, RULE_havingClause);
39632 		try {
39633 			enterOuterAlt(_localctx, 1);
39634 			{
39635 			setState(5483);
39636 			match(HAVING);
39637 			setState(5484);
39638 			expr(0);
39639 			}
39640 		}
39641 		catch (RecognitionException re) {
39642 			_localctx.exception = re;
39643 			_errHandler.reportError(this, re);
39644 			_errHandler.recover(this, re);
39645 		}
39646 		finally {
39647 			exitRule();
39648 		}
39649 		return _localctx;
39650 	}
39651 
39652 	public static class SubqueryContext extends ParserRuleContext {
39653 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39654 		public AggregationClauseContext aggregationClause() {
39655 			return getRuleContext(AggregationClauseContext.class,0);
39656 		}
39657 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39658 		public SubqueryContext(ParserRuleContext parent, int invokingState) {
39659 			super(parent, invokingState);
39660 		}
39661 		@Override public int getRuleIndex() { return RULE_subquery; }
39662 		@Override
39663 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39664 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSubquery(this);
39665 			else return visitor.visitChildren(this);
39666 		}
39667 	}
39668 
39669 	public final SubqueryContext subquery() throws RecognitionException {
39670 		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
39671 		enterRule(_localctx, 772, RULE_subquery);
39672 		try {
39673 			enterOuterAlt(_localctx, 1);
39674 			{
39675 			setState(5486);
39676 			match(LP_);
39677 			setState(5487);
39678 			aggregationClause();
39679 			setState(5488);
39680 			match(RP_);
39681 			}
39682 		}
39683 		catch (RecognitionException re) {
39684 			_localctx.exception = re;
39685 			_errHandler.reportError(this, re);
39686 			_errHandler.recover(this, re);
39687 		}
39688 		finally {
39689 			exitRule();
39690 		}
39691 		return _localctx;
39692 	}
39693 
39694 	public static class WithClauseContext extends ParserRuleContext {
39695 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
39696 		public CteClauseSetContext cteClauseSet() {
39697 			return getRuleContext(CteClauseSetContext.class,0);
39698 		}
39699 		public WithClauseContext(ParserRuleContext parent, int invokingState) {
39700 			super(parent, invokingState);
39701 		}
39702 		@Override public int getRuleIndex() { return RULE_withClause; }
39703 		@Override
39704 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39705 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithClause(this);
39706 			else return visitor.visitChildren(this);
39707 		}
39708 	}
39709 
39710 	public final WithClauseContext withClause() throws RecognitionException {
39711 		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
39712 		enterRule(_localctx, 774, RULE_withClause);
39713 		try {
39714 			enterOuterAlt(_localctx, 1);
39715 			{
39716 			setState(5490);
39717 			match(WITH);
39718 			setState(5491);
39719 			cteClauseSet();
39720 			}
39721 		}
39722 		catch (RecognitionException re) {
39723 			_localctx.exception = re;
39724 			_errHandler.reportError(this, re);
39725 			_errHandler.recover(this, re);
39726 		}
39727 		finally {
39728 			exitRule();
39729 		}
39730 		return _localctx;
39731 	}
39732 
39733 	public static class CteClauseSetContext extends ParserRuleContext {
39734 		public List<CteClauseContext> cteClause() {
39735 			return getRuleContexts(CteClauseContext.class);
39736 		}
39737 		public CteClauseContext cteClause(int i) {
39738 			return getRuleContext(CteClauseContext.class,i);
39739 		}
39740 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39741 		public TerminalNode COMMA_(int i) {
39742 			return getToken(SQLServerStatementParser.COMMA_, i);
39743 		}
39744 		public CteClauseSetContext(ParserRuleContext parent, int invokingState) {
39745 			super(parent, invokingState);
39746 		}
39747 		@Override public int getRuleIndex() { return RULE_cteClauseSet; }
39748 		@Override
39749 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39750 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClauseSet(this);
39751 			else return visitor.visitChildren(this);
39752 		}
39753 	}
39754 
39755 	public final CteClauseSetContext cteClauseSet() throws RecognitionException {
39756 		CteClauseSetContext _localctx = new CteClauseSetContext(_ctx, getState());
39757 		enterRule(_localctx, 776, RULE_cteClauseSet);
39758 		int _la;
39759 		try {
39760 			enterOuterAlt(_localctx, 1);
39761 			{
39762 			setState(5493);
39763 			cteClause();
39764 			setState(5498);
39765 			_errHandler.sync(this);
39766 			_la = _input.LA(1);
39767 			while (_la==COMMA_) {
39768 				{
39769 				{
39770 				setState(5494);
39771 				match(COMMA_);
39772 				setState(5495);
39773 				cteClause();
39774 				}
39775 				}
39776 				setState(5500);
39777 				_errHandler.sync(this);
39778 				_la = _input.LA(1);
39779 			}
39780 			}
39781 		}
39782 		catch (RecognitionException re) {
39783 			_localctx.exception = re;
39784 			_errHandler.reportError(this, re);
39785 			_errHandler.recover(this, re);
39786 		}
39787 		finally {
39788 			exitRule();
39789 		}
39790 		return _localctx;
39791 	}
39792 
39793 	public static class CteClauseContext extends ParserRuleContext {
39794 		public IdentifierContext identifier() {
39795 			return getRuleContext(IdentifierContext.class,0);
39796 		}
39797 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
39798 		public SubqueryContext subquery() {
39799 			return getRuleContext(SubqueryContext.class,0);
39800 		}
39801 		public ColumnNamesContext columnNames() {
39802 			return getRuleContext(ColumnNamesContext.class,0);
39803 		}
39804 		public CteClauseContext(ParserRuleContext parent, int invokingState) {
39805 			super(parent, invokingState);
39806 		}
39807 		@Override public int getRuleIndex() { return RULE_cteClause; }
39808 		@Override
39809 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39810 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClause(this);
39811 			else return visitor.visitChildren(this);
39812 		}
39813 	}
39814 
39815 	public final CteClauseContext cteClause() throws RecognitionException {
39816 		CteClauseContext _localctx = new CteClauseContext(_ctx, getState());
39817 		enterRule(_localctx, 778, RULE_cteClause);
39818 		int _la;
39819 		try {
39820 			enterOuterAlt(_localctx, 1);
39821 			{
39822 			setState(5501);
39823 			identifier();
39824 			setState(5503);
39825 			_errHandler.sync(this);
39826 			_la = _input.LA(1);
39827 			if (_la==LP_) {
39828 				{
39829 				setState(5502);
39830 				columnNames();
39831 				}
39832 			}
39833 
39834 			setState(5505);
39835 			match(AS);
39836 			setState(5506);
39837 			subquery();
39838 			}
39839 		}
39840 		catch (RecognitionException re) {
39841 			_localctx.exception = re;
39842 			_errHandler.reportError(this, re);
39843 			_errHandler.recover(this, re);
39844 		}
39845 		finally {
39846 			exitRule();
39847 		}
39848 		return _localctx;
39849 	}
39850 
39851 	public static class OutputClauseContext extends ParserRuleContext {
39852 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
39853 		public OutputWithColumnsContext outputWithColumns() {
39854 			return getRuleContext(OutputWithColumnsContext.class,0);
39855 		}
39856 		public OutputWithAateriskContext outputWithAaterisk() {
39857 			return getRuleContext(OutputWithAateriskContext.class,0);
39858 		}
39859 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
39860 		public OutputTableNameContext outputTableName() {
39861 			return getRuleContext(OutputTableNameContext.class,0);
39862 		}
39863 		public ColumnNamesContext columnNames() {
39864 			return getRuleContext(ColumnNamesContext.class,0);
39865 		}
39866 		public OutputClauseContext(ParserRuleContext parent, int invokingState) {
39867 			super(parent, invokingState);
39868 		}
39869 		@Override public int getRuleIndex() { return RULE_outputClause; }
39870 		@Override
39871 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39872 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputClause(this);
39873 			else return visitor.visitChildren(this);
39874 		}
39875 	}
39876 
39877 	public final OutputClauseContext outputClause() throws RecognitionException {
39878 		OutputClauseContext _localctx = new OutputClauseContext(_ctx, getState());
39879 		enterRule(_localctx, 780, RULE_outputClause);
39880 		int _la;
39881 		try {
39882 			enterOuterAlt(_localctx, 1);
39883 			{
39884 			setState(5508);
39885 			match(OUTPUT);
39886 			setState(5511);
39887 			_errHandler.sync(this);
39888 			switch ( getInterpreter().adaptivePredict(_input,635,_ctx) ) {
39889 			case 1:
39890 				{
39891 				setState(5509);
39892 				outputWithColumns();
39893 				}
39894 				break;
39895 			case 2:
39896 				{
39897 				setState(5510);
39898 				outputWithAaterisk();
39899 				}
39900 				break;
39901 			}
39902 			setState(5518);
39903 			_errHandler.sync(this);
39904 			_la = _input.LA(1);
39905 			if (_la==INTO) {
39906 				{
39907 				setState(5513);
39908 				match(INTO);
39909 				setState(5514);
39910 				outputTableName();
39911 				setState(5516);
39912 				_errHandler.sync(this);
39913 				_la = _input.LA(1);
39914 				if (_la==LP_) {
39915 					{
39916 					setState(5515);
39917 					columnNames();
39918 					}
39919 				}
39920 
39921 				}
39922 			}
39923 
39924 			}
39925 		}
39926 		catch (RecognitionException re) {
39927 			_localctx.exception = re;
39928 			_errHandler.reportError(this, re);
39929 			_errHandler.recover(this, re);
39930 		}
39931 		finally {
39932 			exitRule();
39933 		}
39934 		return _localctx;
39935 	}
39936 
39937 	public static class OutputWithColumnsContext extends ParserRuleContext {
39938 		public List<OutputWithColumnContext> outputWithColumn() {
39939 			return getRuleContexts(OutputWithColumnContext.class);
39940 		}
39941 		public OutputWithColumnContext outputWithColumn(int i) {
39942 			return getRuleContext(OutputWithColumnContext.class,i);
39943 		}
39944 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39945 		public TerminalNode COMMA_(int i) {
39946 			return getToken(SQLServerStatementParser.COMMA_, i);
39947 		}
39948 		public OutputWithColumnsContext(ParserRuleContext parent, int invokingState) {
39949 			super(parent, invokingState);
39950 		}
39951 		@Override public int getRuleIndex() { return RULE_outputWithColumns; }
39952 		@Override
39953 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39954 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumns(this);
39955 			else return visitor.visitChildren(this);
39956 		}
39957 	}
39958 
39959 	public final OutputWithColumnsContext outputWithColumns() throws RecognitionException {
39960 		OutputWithColumnsContext _localctx = new OutputWithColumnsContext(_ctx, getState());
39961 		enterRule(_localctx, 782, RULE_outputWithColumns);
39962 		int _la;
39963 		try {
39964 			enterOuterAlt(_localctx, 1);
39965 			{
39966 			setState(5520);
39967 			outputWithColumn();
39968 			setState(5525);
39969 			_errHandler.sync(this);
39970 			_la = _input.LA(1);
39971 			while (_la==COMMA_) {
39972 				{
39973 				{
39974 				setState(5521);
39975 				match(COMMA_);
39976 				setState(5522);
39977 				outputWithColumn();
39978 				}
39979 				}
39980 				setState(5527);
39981 				_errHandler.sync(this);
39982 				_la = _input.LA(1);
39983 			}
39984 			}
39985 		}
39986 		catch (RecognitionException re) {
39987 			_localctx.exception = re;
39988 			_errHandler.reportError(this, re);
39989 			_errHandler.recover(this, re);
39990 		}
39991 		finally {
39992 			exitRule();
39993 		}
39994 		return _localctx;
39995 	}
39996 
39997 	public static class OutputWithColumnContext extends ParserRuleContext {
39998 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
39999 		public NameContext name() {
40000 			return getRuleContext(NameContext.class,0);
40001 		}
40002 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
40003 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
40004 		public AliasContext alias() {
40005 			return getRuleContext(AliasContext.class,0);
40006 		}
40007 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40008 		public OutputWithColumnContext(ParserRuleContext parent, int invokingState) {
40009 			super(parent, invokingState);
40010 		}
40011 		@Override public int getRuleIndex() { return RULE_outputWithColumn; }
40012 		@Override
40013 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40014 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumn(this);
40015 			else return visitor.visitChildren(this);
40016 		}
40017 	}
40018 
40019 	public final OutputWithColumnContext outputWithColumn() throws RecognitionException {
40020 		OutputWithColumnContext _localctx = new OutputWithColumnContext(_ctx, getState());
40021 		enterRule(_localctx, 784, RULE_outputWithColumn);
40022 		int _la;
40023 		try {
40024 			enterOuterAlt(_localctx, 1);
40025 			{
40026 			setState(5528);
40027 			_la = _input.LA(1);
40028 			if ( !(_la==INSERTED || _la==DELETED) ) {
40029 			_errHandler.recoverInline(this);
40030 			}
40031 			else {
40032 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40033 				_errHandler.reportMatch(this);
40034 				consume();
40035 			}
40036 			setState(5529);
40037 			match(DOT_);
40038 			setState(5530);
40039 			name();
40040 			setState(5535);
40041 			_errHandler.sync(this);
40042 			switch ( getInterpreter().adaptivePredict(_input,640,_ctx) ) {
40043 			case 1:
40044 				{
40045 				setState(5532);
40046 				_errHandler.sync(this);
40047 				_la = _input.LA(1);
40048 				if (_la==AS) {
40049 					{
40050 					setState(5531);
40051 					match(AS);
40052 					}
40053 				}
40054 
40055 				setState(5534);
40056 				alias();
40057 				}
40058 				break;
40059 			}
40060 			}
40061 		}
40062 		catch (RecognitionException re) {
40063 			_localctx.exception = re;
40064 			_errHandler.reportError(this, re);
40065 			_errHandler.recover(this, re);
40066 		}
40067 		finally {
40068 			exitRule();
40069 		}
40070 		return _localctx;
40071 	}
40072 
40073 	public static class OutputWithAateriskContext extends ParserRuleContext {
40074 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
40075 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
40076 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
40077 		public OutputWithAateriskContext(ParserRuleContext parent, int invokingState) {
40078 			super(parent, invokingState);
40079 		}
40080 		@Override public int getRuleIndex() { return RULE_outputWithAaterisk; }
40081 		@Override
40082 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40083 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithAaterisk(this);
40084 			else return visitor.visitChildren(this);
40085 		}
40086 	}
40087 
40088 	public final OutputWithAateriskContext outputWithAaterisk() throws RecognitionException {
40089 		OutputWithAateriskContext _localctx = new OutputWithAateriskContext(_ctx, getState());
40090 		enterRule(_localctx, 786, RULE_outputWithAaterisk);
40091 		int _la;
40092 		try {
40093 			enterOuterAlt(_localctx, 1);
40094 			{
40095 			setState(5537);
40096 			_la = _input.LA(1);
40097 			if ( !(_la==INSERTED || _la==DELETED) ) {
40098 			_errHandler.recoverInline(this);
40099 			}
40100 			else {
40101 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40102 				_errHandler.reportMatch(this);
40103 				consume();
40104 			}
40105 			setState(5538);
40106 			match(DOT_ASTERISK_);
40107 			}
40108 		}
40109 		catch (RecognitionException re) {
40110 			_localctx.exception = re;
40111 			_errHandler.reportError(this, re);
40112 			_errHandler.recover(this, re);
40113 		}
40114 		finally {
40115 			exitRule();
40116 		}
40117 		return _localctx;
40118 	}
40119 
40120 	public static class OutputTableNameContext extends ParserRuleContext {
40121 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
40122 		public NameContext name() {
40123 			return getRuleContext(NameContext.class,0);
40124 		}
40125 		public TableNameContext tableName() {
40126 			return getRuleContext(TableNameContext.class,0);
40127 		}
40128 		public OutputTableNameContext(ParserRuleContext parent, int invokingState) {
40129 			super(parent, invokingState);
40130 		}
40131 		@Override public int getRuleIndex() { return RULE_outputTableName; }
40132 		@Override
40133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputTableName(this);
40135 			else return visitor.visitChildren(this);
40136 		}
40137 	}
40138 
40139 	public final OutputTableNameContext outputTableName() throws RecognitionException {
40140 		OutputTableNameContext _localctx = new OutputTableNameContext(_ctx, getState());
40141 		enterRule(_localctx, 788, RULE_outputTableName);
40142 		try {
40143 			setState(5543);
40144 			_errHandler.sync(this);
40145 			switch (_input.LA(1)) {
40146 			case AT_:
40147 				enterOuterAlt(_localctx, 1);
40148 				{
40149 				{
40150 				setState(5540);
40151 				match(AT_);
40152 				setState(5541);
40153 				name();
40154 				}
40155 				}
40156 				break;
40157 			case DOT_:
40158 			case TRUNCATE:
40159 			case SCHEMA:
40160 			case COLUMNS:
40161 			case PRECISION:
40162 			case FUNCTION:
40163 			case TRIGGER:
40164 			case CAST:
40165 			case TRIM:
40166 			case SUBSTRING:
40167 			case OFF:
40168 			case GROUP:
40169 			case LIMIT:
40170 			case OFFSET:
40171 			case SAVEPOINT:
40172 			case BOOLEAN:
40173 			case ARRAY:
40174 			case DATE:
40175 			case TIMESTAMP:
40176 			case LOCALTIME:
40177 			case LOCALTIMESTAMP:
40178 			case YEAR:
40179 			case QUARTER:
40180 			case MONTH:
40181 			case WEEK:
40182 			case DAY:
40183 			case SECOND:
40184 			case MICROSECOND:
40185 			case MAX:
40186 			case MIN:
40187 			case SUM:
40188 			case COUNT:
40189 			case AVG:
40190 			case ENABLE:
40191 			case DISABLE:
40192 			case INSTANCE:
40193 			case DO:
40194 			case DEFINER:
40195 			case SQL:
40196 			case CASCADED:
40197 			case LOCAL:
40198 			case NEXT:
40199 			case NAME:
40200 			case INTEGER:
40201 			case TYPE:
40202 			case TEXT:
40203 			case VIEWS:
40204 			case READ_ONLY:
40205 			case DATABASE:
40206 			case RETURNS:
40207 			case DATEPART:
40208 			case PASSWORD:
40209 			case BINARY:
40210 			case HIDDEN_:
40211 			case MOD:
40212 			case PARTITION:
40213 			case PARTITIONS:
40214 			case TOP:
40215 			case ROW:
40216 			case ROWS:
40217 			case XOR:
40218 			case ALWAYS:
40219 			case ROLE:
40220 			case START:
40221 			case ALGORITHM:
40222 			case AUTO:
40223 			case BLOCKERS:
40224 			case CLUSTERED:
40225 			case NONCLUSTERED:
40226 			case COLUMNSTORE:
40227 			case CONTENT:
40228 			case YEARS:
40229 			case MONTHS:
40230 			case WEEKS:
40231 			case DAYS:
40232 			case MINUTES:
40233 			case DENY:
40234 			case DETERMINISTIC:
40235 			case DISTRIBUTION:
40236 			case DOCUMENT:
40237 			case DURABILITY:
40238 			case ENCRYPTED:
40239 			case FILESTREAM:
40240 			case FILETABLE:
40241 			case FILLFACTOR:
40242 			case FOLLOWING:
40243 			case HASH:
40244 			case HEAP:
40245 			case INBOUND:
40246 			case OUTBOUND:
40247 			case UNBOUNDED:
40248 			case INFINITE:
40249 			case LOGIN:
40250 			case MASKED:
40251 			case MAXDOP:
40252 			case MOVE:
40253 			case NOCHECK:
40254 			case OBJECT:
40255 			case ONLINE:
40256 			case OVER:
40257 			case PAGE:
40258 			case PAUSED:
40259 			case PERIOD:
40260 			case PERSISTED:
40261 			case PRECEDING:
40262 			case RANDOMIZED:
40263 			case RANGE:
40264 			case REBUILD:
40265 			case REPLICATE:
40266 			case REPLICATION:
40267 			case RESUMABLE:
40268 			case ROWGUIDCOL:
40269 			case SAVE:
40270 			case SELF:
40271 			case SPARSE:
40272 			case SWITCH:
40273 			case TRAN:
40274 			case TRANCOUNT:
40275 			case CONTROL:
40276 			case CONCAT:
40277 			case TAKE:
40278 			case OWNERSHIP:
40279 			case DEFINITION:
40280 			case APPLICATION:
40281 			case ASSEMBLY:
40282 			case SYMMETRIC:
40283 			case ASYMMETRIC:
40284 			case SERVER:
40285 			case RECEIVE:
40286 			case CHANGE:
40287 			case TRACE:
40288 			case TRACKING:
40289 			case RESOURCES:
40290 			case SETTINGS:
40291 			case STATE:
40292 			case AVAILABILITY:
40293 			case CREDENTIAL:
40294 			case ENDPOINT:
40295 			case EVENT:
40296 			case NOTIFICATION:
40297 			case LINKED:
40298 			case AUDIT:
40299 			case DDL:
40300 			case XML:
40301 			case IMPERSONATE:
40302 			case SECURABLES:
40303 			case AUTHENTICATE:
40304 			case EXTERNAL:
40305 			case ACCESS:
40306 			case ADMINISTER:
40307 			case BULK:
40308 			case OPERATIONS:
40309 			case UNSAFE:
40310 			case SHUTDOWN:
40311 			case SCOPED:
40312 			case CONFIGURATION:
40313 			case DATASPACE:
40314 			case SERVICE:
40315 			case CERTIFICATE:
40316 			case CONTRACT:
40317 			case ENCRYPTION:
40318 			case MASTER:
40319 			case DATA:
40320 			case SOURCE:
40321 			case FILE:
40322 			case FORMAT:
40323 			case LIBRARY:
40324 			case FULLTEXT:
40325 			case MASK:
40326 			case UNMASK:
40327 			case MESSAGE:
40328 			case REMOTE:
40329 			case BINDING:
40330 			case ROUTE:
40331 			case SECURITY:
40332 			case POLICY:
40333 			case AGGREGATE:
40334 			case QUEUE:
40335 			case RULE:
40336 			case SYNONYM:
40337 			case COLLECTION:
40338 			case SCRIPT:
40339 			case KILL:
40340 			case BACKUP:
40341 			case LOG:
40342 			case SHOWPLAN:
40343 			case SUBSCRIBE:
40344 			case QUERY:
40345 			case NOTIFICATIONS:
40346 			case CHECKPOINT:
40347 			case SEQUENCE:
40348 			case ABORT_AFTER_WAIT:
40349 			case ALLOW_PAGE_LOCKS:
40350 			case ALLOW_ROW_LOCKS:
40351 			case ALL_SPARSE_COLUMNS:
40352 			case BUCKET_COUNT:
40353 			case COLUMNSTORE_ARCHIVE:
40354 			case COLUMN_ENCRYPTION_KEY:
40355 			case COLUMN_SET:
40356 			case COMPRESSION_DELAY:
40357 			case DATABASE_DEAULT:
40358 			case DATA_COMPRESSION:
40359 			case DATA_CONSISTENCY_CHECK:
40360 			case ENCRYPTION_TYPE:
40361 			case SYSTEM_TIME:
40362 			case SYSTEM_VERSIONING:
40363 			case TEXTIMAGE_ON:
40364 			case WAIT_AT_LOW_PRIORITY:
40365 			case STATISTICS_INCREMENTAL:
40366 			case STATISTICS_NORECOMPUTE:
40367 			case ROUND_ROBIN:
40368 			case SCHEMA_AND_DATA:
40369 			case SCHEMA_ONLY:
40370 			case SORT_IN_TEMPDB:
40371 			case IGNORE_DUP_KEY:
40372 			case IMPLICIT_TRANSACTIONS:
40373 			case MAX_DURATION:
40374 			case MEMORY_OPTIMIZED:
40375 			case MIGRATION_STATE:
40376 			case PAD_INDEX:
40377 			case REMOTE_DATA_ARCHIVE:
40378 			case FILESTREAM_ON:
40379 			case FILETABLE_COLLATE_FILENAME:
40380 			case FILETABLE_DIRECTORY:
40381 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
40382 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
40383 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
40384 			case FILTER_PREDICATE:
40385 			case HISTORY_RETENTION_PERIOD:
40386 			case HISTORY_TABLE:
40387 			case LOCK_ESCALATION:
40388 			case DROP_EXISTING:
40389 			case ROW_NUMBER:
40390 			case FIRST:
40391 			case DATETIME2:
40392 			case OUTPUT:
40393 			case INSERTED:
40394 			case DELETED:
40395 			case FILENAME:
40396 			case SIZE:
40397 			case MAXSIZE:
40398 			case FILEGROWTH:
40399 			case UNLIMITED:
40400 			case KB:
40401 			case MB:
40402 			case GB:
40403 			case TB:
40404 			case CONTAINS:
40405 			case MEMORY_OPTIMIZED_DATA:
40406 			case FILEGROUP:
40407 			case NON_TRANSACTED_ACCESS:
40408 			case DB_CHAINING:
40409 			case TRUSTWORTHY:
40410 			case FORWARD_ONLY:
40411 			case KEYSET:
40412 			case FAST_FORWARD:
40413 			case SCROLL_LOCKS:
40414 			case OPTIMISTIC:
40415 			case TYPE_WARNING:
40416 			case SCHEMABINDING:
40417 			case CALLER:
40418 			case INPUT:
40419 			case OWNER:
40420 			case SNAPSHOT:
40421 			case REPEATABLE:
40422 			case SERIALIZABLE:
40423 			case NATIVE_COMPILATION:
40424 			case VIEW_METADATA:
40425 			case INSTEAD:
40426 			case APPEND:
40427 			case INCREMENT:
40428 			case CACHE:
40429 			case MINVALUE:
40430 			case MAXVALUE:
40431 			case RESTART:
40432 			case LOB_COMPACTION:
40433 			case COMPRESS_ALL_ROW_GROUPS:
40434 			case REORGANIZE:
40435 			case RESUME:
40436 			case PAUSE:
40437 			case ABORT:
40438 			case ACCELERATED_DATABASE_RECOVERY:
40439 			case PERSISTENT_VERSION_STORE_FILEGROUP:
40440 			case IMMEDIATE:
40441 			case NO_WAIT:
40442 			case TARGET_RECOVERY_TIME:
40443 			case SECONDS:
40444 			case HONOR_BROKER_PRIORITY:
40445 			case ERROR_BROKER_CONVERSATIONS:
40446 			case NEW_BROKER:
40447 			case DISABLE_BROKER:
40448 			case ENABLE_BROKER:
40449 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
40450 			case READ_COMMITTED_SNAPSHOT:
40451 			case ALLOW_SNAPSHOT_ISOLATION:
40452 			case RECURSIVE_TRIGGERS:
40453 			case QUOTED_IDENTIFIER:
40454 			case NUMERIC_ROUNDABORT:
40455 			case CONCAT_NULL_YIELDS_NULL:
40456 			case COMPATIBILITY_LEVEL:
40457 			case ARITHABORT:
40458 			case ANSI_WARNINGS:
40459 			case ANSI_PADDING:
40460 			case ANSI_NULLS:
40461 			case ANSI_NULL_DEFAULT:
40462 			case PAGE_VERIFY:
40463 			case CHECKSUM:
40464 			case TORN_PAGE_DETECTION:
40465 			case BULK_LOGGED:
40466 			case RECOVERY:
40467 			case TOTAL_EXECUTION_CPU_TIME_MS:
40468 			case TOTAL_COMPILE_CPU_TIME_MS:
40469 			case STALE_CAPTURE_POLICY_THRESHOLD:
40470 			case EXECUTION_COUNT:
40471 			case QUERY_CAPTURE_POLICY:
40472 			case WAIT_STATS_CAPTURE_MODE:
40473 			case MAX_PLANS_PER_QUERY:
40474 			case QUERY_CAPTURE_MODE:
40475 			case SIZE_BASED_CLEANUP_MODE:
40476 			case INTERVAL_LENGTH_MINUTES:
40477 			case MAX_STORAGE_SIZE_MB:
40478 			case DATA_FLUSH_INTERVAL_SECONDS:
40479 			case CLEANUP_POLICY:
40480 			case CUSTOM:
40481 			case STALE_QUERY_THRESHOLD_DAYS:
40482 			case OPERATION_MODE:
40483 			case QUERY_STORE:
40484 			case CURSOR_DEFAULT:
40485 			case GLOBAL:
40486 			case CURSOR_CLOSE_ON_COMMIT:
40487 			case HOURS:
40488 			case CHANGE_RETENTION:
40489 			case AUTO_CLEANUP:
40490 			case CHANGE_TRACKING:
40491 			case AUTOMATIC_TUNING:
40492 			case FORCE_LAST_GOOD_PLAN:
40493 			case AUTO_UPDATE_STATISTICS_ASYNC:
40494 			case AUTO_UPDATE_STATISTICS:
40495 			case AUTO_SHRINK:
40496 			case AUTO_CREATE_STATISTICS:
40497 			case INCREMENTAL:
40498 			case AUTO_CLOSE:
40499 			case DATA_RETENTION:
40500 			case TEMPORAL_HISTORY_RETENTION:
40501 			case EDITION:
40502 			case MIXED_PAGE_ALLOCATION:
40503 			case DISABLED:
40504 			case ALLOWED:
40505 			case HADR:
40506 			case MULTI_USER:
40507 			case RESTRICTED_USER:
40508 			case SINGLE_USER:
40509 			case OFFLINE:
40510 			case EMERGENCY:
40511 			case SUSPEND:
40512 			case DATE_CORRELATION_OPTIMIZATION:
40513 			case ELASTIC_POOL:
40514 			case SERVICE_OBJECTIVE:
40515 			case DATABASE_NAME:
40516 			case ALLOW_CONNECTIONS:
40517 			case GEO:
40518 			case NAMED:
40519 			case DATEFIRST:
40520 			case BACKUP_STORAGE_REDUNDANCY:
40521 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
40522 			case SECONDARY:
40523 			case FAILOVER:
40524 			case DEFAULT_FULLTEXT_LANGUAGE:
40525 			case DEFAULT_LANGUAGE:
40526 			case INLINE:
40527 			case NESTED_TRIGGERS:
40528 			case TRANSFORM_NOISE_WORDS:
40529 			case TWO_DIGIT_YEAR_CUTOFF:
40530 			case PERSISTENT_LOG_BUFFER:
40531 			case DIRECTORY_NAME:
40532 			case DATEFORMAT:
40533 			case DELAYED_DURABILITY:
40534 			case AUTHORIZATION:
40535 			case TRANSFER:
40536 			case PROVIDER:
40537 			case SEARCH:
40538 			case MEMBER:
40539 			case IDENTIFIER_:
40540 			case DELIMITED_IDENTIFIER_:
40541 				enterOuterAlt(_localctx, 2);
40542 				{
40543 				setState(5542);
40544 				tableName();
40545 				}
40546 				break;
40547 			default:
40548 				throw new NoViableAltException(this);
40549 			}
40550 		}
40551 		catch (RecognitionException re) {
40552 			_localctx.exception = re;
40553 			_errHandler.reportError(this, re);
40554 			_errHandler.recover(this, re);
40555 		}
40556 		finally {
40557 			exitRule();
40558 		}
40559 		return _localctx;
40560 	}
40561 
40562 	public static class QueryHintContext extends ParserRuleContext {
40563 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
40564 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
40565 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
40566 		public TerminalNode UNION() { return getToken(SQLServerStatementParser.UNION, 0); }
40567 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
40568 		public TerminalNode MERGE() { return getToken(SQLServerStatementParser.MERGE, 0); }
40569 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
40570 		public TerminalNode LOOP() { return getToken(SQLServerStatementParser.LOOP, 0); }
40571 		public TerminalNode EXPAND() { return getToken(SQLServerStatementParser.EXPAND, 0); }
40572 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
40573 		public TerminalNode FAST() { return getToken(SQLServerStatementParser.FAST, 0); }
40574 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
40575 		public TerminalNode FORCE() { return getToken(SQLServerStatementParser.FORCE, 0); }
40576 		public TerminalNode EXTERNALPUSHDOWN() { return getToken(SQLServerStatementParser.EXTERNALPUSHDOWN, 0); }
40577 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
40578 		public TerminalNode SCALEOUTEXECUTION() { return getToken(SQLServerStatementParser.SCALEOUTEXECUTION, 0); }
40579 		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(SQLServerStatementParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
40580 		public TerminalNode KEEP() { return getToken(SQLServerStatementParser.KEEP, 0); }
40581 		public TerminalNode PLAN() { return getToken(SQLServerStatementParser.PLAN, 0); }
40582 		public TerminalNode KEEPFIXED() { return getToken(SQLServerStatementParser.KEEPFIXED, 0); }
40583 		public TerminalNode MAX_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MAX_GRANT_PERCENT, 0); }
40584 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
40585 		public TerminalNode EQ_(int i) {
40586 			return getToken(SQLServerStatementParser.EQ_, i);
40587 		}
40588 		public TerminalNode DECIMAL_NUM_() { return getToken(SQLServerStatementParser.DECIMAL_NUM_, 0); }
40589 		public TerminalNode MIN_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MIN_GRANT_PERCENT, 0); }
40590 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
40591 		public TerminalNode MAXRECURSION() { return getToken(SQLServerStatementParser.MAXRECURSION, 0); }
40592 		public TerminalNode NO_PERFORMANCE_SPOOL() { return getToken(SQLServerStatementParser.NO_PERFORMANCE_SPOOL, 0); }
40593 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
40594 		public TerminalNode LP_(int i) {
40595 			return getToken(SQLServerStatementParser.LP_, i);
40596 		}
40597 		public TerminalNode OPTIMIZE() { return getToken(SQLServerStatementParser.OPTIMIZE, 0); }
40598 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
40599 		public VariableNameContext variableName() {
40600 			return getRuleContext(VariableNameContext.class,0);
40601 		}
40602 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
40603 		public TerminalNode RP_(int i) {
40604 			return getToken(SQLServerStatementParser.RP_, i);
40605 		}
40606 		public List<TerminalNode> UNKNOWN() { return getTokens(SQLServerStatementParser.UNKNOWN); }
40607 		public TerminalNode UNKNOWN(int i) {
40608 			return getToken(SQLServerStatementParser.UNKNOWN, i);
40609 		}
40610 		public List<LiteralsContext> literals() {
40611 			return getRuleContexts(LiteralsContext.class);
40612 		}
40613 		public LiteralsContext literals(int i) {
40614 			return getRuleContext(LiteralsContext.class,i);
40615 		}
40616 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
40617 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
40618 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
40619 		public TerminalNode QUERYTRACEON() { return getToken(SQLServerStatementParser.QUERYTRACEON, 0); }
40620 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
40621 		public TerminalNode ROBUST() { return getToken(SQLServerStatementParser.ROBUST, 0); }
40622 		public TerminalNode USE() { return getToken(SQLServerStatementParser.USE, 0); }
40623 		public TerminalNode HINT() { return getToken(SQLServerStatementParser.HINT, 0); }
40624 		public List<UseHitNameContext> useHitName() {
40625 			return getRuleContexts(UseHitNameContext.class);
40626 		}
40627 		public UseHitNameContext useHitName(int i) {
40628 			return getRuleContext(UseHitNameContext.class,i);
40629 		}
40630 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
40631 		public QueryHintContext(ParserRuleContext parent, int invokingState) {
40632 			super(parent, invokingState);
40633 		}
40634 		@Override public int getRuleIndex() { return RULE_queryHint; }
40635 		@Override
40636 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40637 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryHint(this);
40638 			else return visitor.visitChildren(this);
40639 		}
40640 	}
40641 
40642 	public final QueryHintContext queryHint() throws RecognitionException {
40643 		QueryHintContext _localctx = new QueryHintContext(_ctx, getState());
40644 		enterRule(_localctx, 790, RULE_queryHint);
40645 		int _la;
40646 		try {
40647 			setState(5616);
40648 			_errHandler.sync(this);
40649 			switch ( getInterpreter().adaptivePredict(_input,645,_ctx) ) {
40650 			case 1:
40651 				enterOuterAlt(_localctx, 1);
40652 				{
40653 				setState(5545);
40654 				_la = _input.LA(1);
40655 				if ( !(_la==ORDER || _la==HASH) ) {
40656 				_errHandler.recoverInline(this);
40657 				}
40658 				else {
40659 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40660 					_errHandler.reportMatch(this);
40661 					consume();
40662 				}
40663 				setState(5546);
40664 				match(GROUP);
40665 				}
40666 				break;
40667 			case 2:
40668 				enterOuterAlt(_localctx, 2);
40669 				{
40670 				setState(5547);
40671 				_la = _input.LA(1);
40672 				if ( !(_la==MERGE || _la==HASH || _la==CONCAT) ) {
40673 				_errHandler.recoverInline(this);
40674 				}
40675 				else {
40676 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40677 					_errHandler.reportMatch(this);
40678 					consume();
40679 				}
40680 				setState(5548);
40681 				match(UNION);
40682 				}
40683 				break;
40684 			case 3:
40685 				enterOuterAlt(_localctx, 3);
40686 				{
40687 				setState(5549);
40688 				_la = _input.LA(1);
40689 				if ( !(_la==MERGE || _la==LOOP || _la==HASH) ) {
40690 				_errHandler.recoverInline(this);
40691 				}
40692 				else {
40693 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40694 					_errHandler.reportMatch(this);
40695 					consume();
40696 				}
40697 				setState(5550);
40698 				match(JOIN);
40699 				}
40700 				break;
40701 			case 4:
40702 				enterOuterAlt(_localctx, 4);
40703 				{
40704 				setState(5551);
40705 				match(EXPAND);
40706 				setState(5552);
40707 				match(VIEWS);
40708 				}
40709 				break;
40710 			case 5:
40711 				enterOuterAlt(_localctx, 5);
40712 				{
40713 				setState(5553);
40714 				match(FAST);
40715 				setState(5554);
40716 				match(INT_NUM_);
40717 				}
40718 				break;
40719 			case 6:
40720 				enterOuterAlt(_localctx, 6);
40721 				{
40722 				setState(5555);
40723 				match(FORCE);
40724 				setState(5556);
40725 				match(ORDER);
40726 				}
40727 				break;
40728 			case 7:
40729 				enterOuterAlt(_localctx, 7);
40730 				{
40731 				setState(5557);
40732 				_la = _input.LA(1);
40733 				if ( !(_la==DISABLE || _la==FORCE) ) {
40734 				_errHandler.recoverInline(this);
40735 				}
40736 				else {
40737 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40738 					_errHandler.reportMatch(this);
40739 					consume();
40740 				}
40741 				setState(5558);
40742 				match(EXTERNALPUSHDOWN);
40743 				}
40744 				break;
40745 			case 8:
40746 				enterOuterAlt(_localctx, 8);
40747 				{
40748 				setState(5559);
40749 				_la = _input.LA(1);
40750 				if ( !(_la==DISABLE || _la==FORCE) ) {
40751 				_errHandler.recoverInline(this);
40752 				}
40753 				else {
40754 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40755 					_errHandler.reportMatch(this);
40756 					consume();
40757 				}
40758 				setState(5560);
40759 				match(SCALEOUTEXECUTION);
40760 				}
40761 				break;
40762 			case 9:
40763 				enterOuterAlt(_localctx, 9);
40764 				{
40765 				setState(5561);
40766 				match(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);
40767 				}
40768 				break;
40769 			case 10:
40770 				enterOuterAlt(_localctx, 10);
40771 				{
40772 				setState(5562);
40773 				match(KEEP);
40774 				setState(5563);
40775 				match(PLAN);
40776 				}
40777 				break;
40778 			case 11:
40779 				enterOuterAlt(_localctx, 11);
40780 				{
40781 				setState(5564);
40782 				match(KEEPFIXED);
40783 				setState(5565);
40784 				match(PLAN);
40785 				}
40786 				break;
40787 			case 12:
40788 				enterOuterAlt(_localctx, 12);
40789 				{
40790 				setState(5566);
40791 				match(MAX_GRANT_PERCENT);
40792 				setState(5567);
40793 				match(EQ_);
40794 				setState(5568);
40795 				match(DECIMAL_NUM_);
40796 				}
40797 				break;
40798 			case 13:
40799 				enterOuterAlt(_localctx, 13);
40800 				{
40801 				setState(5569);
40802 				match(MIN_GRANT_PERCENT);
40803 				setState(5570);
40804 				match(EQ_);
40805 				setState(5571);
40806 				match(DECIMAL_NUM_);
40807 				}
40808 				break;
40809 			case 14:
40810 				enterOuterAlt(_localctx, 14);
40811 				{
40812 				setState(5572);
40813 				match(MAXDOP);
40814 				setState(5573);
40815 				match(INT_NUM_);
40816 				}
40817 				break;
40818 			case 15:
40819 				enterOuterAlt(_localctx, 15);
40820 				{
40821 				setState(5574);
40822 				match(MAXRECURSION);
40823 				setState(5575);
40824 				match(INT_NUM_);
40825 				}
40826 				break;
40827 			case 16:
40828 				enterOuterAlt(_localctx, 16);
40829 				{
40830 				setState(5576);
40831 				match(NO_PERFORMANCE_SPOOL);
40832 				}
40833 				break;
40834 			case 17:
40835 				enterOuterAlt(_localctx, 17);
40836 				{
40837 				setState(5577);
40838 				match(LP_);
40839 				setState(5578);
40840 				match(OPTIMIZE);
40841 				setState(5579);
40842 				match(FOR);
40843 				setState(5580);
40844 				match(LP_);
40845 				setState(5581);
40846 				variableName();
40847 				setState(5587);
40848 				_errHandler.sync(this);
40849 				_la = _input.LA(1);
40850 				while (_la==EQ_ || _la==UNKNOWN) {
40851 					{
40852 					setState(5585);
40853 					_errHandler.sync(this);
40854 					switch (_input.LA(1)) {
40855 					case UNKNOWN:
40856 						{
40857 						setState(5582);
40858 						match(UNKNOWN);
40859 						}
40860 						break;
40861 					case EQ_:
40862 						{
40863 						setState(5583);
40864 						match(EQ_);
40865 						setState(5584);
40866 						literals();
40867 						}
40868 						break;
40869 					default:
40870 						throw new NoViableAltException(this);
40871 					}
40872 					}
40873 					setState(5589);
40874 					_errHandler.sync(this);
40875 					_la = _input.LA(1);
40876 				}
40877 				setState(5590);
40878 				match(RP_);
40879 				setState(5591);
40880 				match(RP_);
40881 				}
40882 				break;
40883 			case 18:
40884 				enterOuterAlt(_localctx, 18);
40885 				{
40886 				setState(5593);
40887 				match(OPTIMIZE);
40888 				setState(5594);
40889 				match(FOR);
40890 				setState(5595);
40891 				match(UNKNOWN);
40892 				}
40893 				break;
40894 			case 19:
40895 				enterOuterAlt(_localctx, 19);
40896 				{
40897 				setState(5596);
40898 				match(PARAMETERIZATION);
40899 				setState(5597);
40900 				_la = _input.LA(1);
40901 				if ( !(_la==SIMPLE || _la==FORCED) ) {
40902 				_errHandler.recoverInline(this);
40903 				}
40904 				else {
40905 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40906 					_errHandler.reportMatch(this);
40907 					consume();
40908 				}
40909 				}
40910 				break;
40911 			case 20:
40912 				enterOuterAlt(_localctx, 20);
40913 				{
40914 				setState(5598);
40915 				match(QUERYTRACEON);
40916 				setState(5599);
40917 				match(INT_NUM_);
40918 				}
40919 				break;
40920 			case 21:
40921 				enterOuterAlt(_localctx, 21);
40922 				{
40923 				setState(5600);
40924 				match(RECOMPILE);
40925 				}
40926 				break;
40927 			case 22:
40928 				enterOuterAlt(_localctx, 22);
40929 				{
40930 				setState(5601);
40931 				match(ROBUST);
40932 				setState(5602);
40933 				match(PLAN);
40934 				}
40935 				break;
40936 			case 23:
40937 				enterOuterAlt(_localctx, 23);
40938 				{
40939 				setState(5603);
40940 				match(USE);
40941 				setState(5604);
40942 				match(HINT);
40943 				setState(5605);
40944 				match(LP_);
40945 				setState(5609);
40946 				_errHandler.sync(this);
40947 				_la = _input.LA(1);
40948 				while (_la==SQ_) {
40949 					{
40950 					{
40951 					setState(5606);
40952 					useHitName();
40953 					}
40954 					}
40955 					setState(5611);
40956 					_errHandler.sync(this);
40957 					_la = _input.LA(1);
40958 				}
40959 				setState(5612);
40960 				match(RP_);
40961 				}
40962 				break;
40963 			case 24:
40964 				enterOuterAlt(_localctx, 24);
40965 				{
40966 				setState(5613);
40967 				match(USE);
40968 				setState(5614);
40969 				match(PLAN);
40970 				setState(5615);
40971 				match(NCHAR_TEXT);
40972 				}
40973 				break;
40974 			}
40975 		}
40976 		catch (RecognitionException re) {
40977 			_localctx.exception = re;
40978 			_errHandler.reportError(this, re);
40979 			_errHandler.recover(this, re);
40980 		}
40981 		finally {
40982 			exitRule();
40983 		}
40984 		return _localctx;
40985 	}
40986 
40987 	public static class UseHitNameContext extends ParserRuleContext {
40988 		public List<TerminalNode> SQ_() { return getTokens(SQLServerStatementParser.SQ_); }
40989 		public TerminalNode SQ_(int i) {
40990 			return getToken(SQLServerStatementParser.SQ_, i);
40991 		}
40992 		public TerminalNode ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS() { return getToken(SQLServerStatementParser.ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS, 0); }
40993 		public TerminalNode ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES() { return getToken(SQLServerStatementParser.ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES, 0); }
40994 		public TerminalNode DISABLE_BATCH_MODE_ADAPTIVE_JOINS() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_ADAPTIVE_JOINS, 0); }
40995 		public TerminalNode DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK, 0); }
40996 		public TerminalNode DISABLE_DEFERRED_COMPILATION_TV() { return getToken(SQLServerStatementParser.DISABLE_DEFERRED_COMPILATION_TV, 0); }
40997 		public TerminalNode DISABLE_INTERLEAVED_EXECUTION_TVF() { return getToken(SQLServerStatementParser.DISABLE_INTERLEAVED_EXECUTION_TVF, 0); }
40998 		public TerminalNode DISABLE_OPTIMIZED_NESTED_LOOP() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZED_NESTED_LOOP, 0); }
40999 		public TerminalNode DISABLE_OPTIMIZER_ROWGOAL() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZER_ROWGOAL, 0); }
41000 		public TerminalNode DISABLE_PARAMETER_SNIFFING() { return getToken(SQLServerStatementParser.DISABLE_PARAMETER_SNIFFING, 0); }
41001 		public TerminalNode DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK, 0); }
41002 		public TerminalNode DISABLE_TSQL_SCALAR_UDF_INLINING() { return getToken(SQLServerStatementParser.DISABLE_TSQL_SCALAR_UDF_INLINING, 0); }
41003 		public TerminalNode DISALLOW_BATCH_MODE() { return getToken(SQLServerStatementParser.DISALLOW_BATCH_MODE, 0); }
41004 		public TerminalNode ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS() { return getToken(SQLServerStatementParser.ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS, 0); }
41005 		public TerminalNode ENABLE_QUERY_OPTIMIZER_HOTFIXES() { return getToken(SQLServerStatementParser.ENABLE_QUERY_OPTIMIZER_HOTFIXES, 0); }
41006 		public TerminalNode FORCE_DEFAULT_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_DEFAULT_CARDINALITY_ESTIMATION, 0); }
41007 		public TerminalNode FORCE_LEGACY_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_LEGACY_CARDINALITY_ESTIMATION, 0); }
41008 		public TerminalNode QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n() { return getToken(SQLServerStatementParser.QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n, 0); }
41009 		public TerminalNode QUERY_PLAN_PROFILE() { return getToken(SQLServerStatementParser.QUERY_PLAN_PROFILE, 0); }
41010 		public UseHitNameContext(ParserRuleContext parent, int invokingState) {
41011 			super(parent, invokingState);
41012 		}
41013 		@Override public int getRuleIndex() { return RULE_useHitName; }
41014 		@Override
41015 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41016 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUseHitName(this);
41017 			else return visitor.visitChildren(this);
41018 		}
41019 	}
41020 
41021 	public final UseHitNameContext useHitName() throws RecognitionException {
41022 		UseHitNameContext _localctx = new UseHitNameContext(_ctx, getState());
41023 		enterRule(_localctx, 792, RULE_useHitName);
41024 		try {
41025 			setState(5672);
41026 			_errHandler.sync(this);
41027 			switch ( getInterpreter().adaptivePredict(_input,646,_ctx) ) {
41028 			case 1:
41029 				enterOuterAlt(_localctx, 1);
41030 				{
41031 				setState(5618);
41032 				match(SQ_);
41033 				setState(5619);
41034 				match(ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS);
41035 				setState(5620);
41036 				match(SQ_);
41037 				}
41038 				break;
41039 			case 2:
41040 				enterOuterAlt(_localctx, 2);
41041 				{
41042 				setState(5621);
41043 				match(SQ_);
41044 				setState(5622);
41045 				match(ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES);
41046 				setState(5623);
41047 				match(SQ_);
41048 				}
41049 				break;
41050 			case 3:
41051 				enterOuterAlt(_localctx, 3);
41052 				{
41053 				setState(5624);
41054 				match(SQ_);
41055 				setState(5625);
41056 				match(DISABLE_BATCH_MODE_ADAPTIVE_JOINS);
41057 				setState(5626);
41058 				match(SQ_);
41059 				}
41060 				break;
41061 			case 4:
41062 				enterOuterAlt(_localctx, 4);
41063 				{
41064 				setState(5627);
41065 				match(SQ_);
41066 				setState(5628);
41067 				match(DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK);
41068 				setState(5629);
41069 				match(SQ_);
41070 				}
41071 				break;
41072 			case 5:
41073 				enterOuterAlt(_localctx, 5);
41074 				{
41075 				setState(5630);
41076 				match(SQ_);
41077 				setState(5631);
41078 				match(DISABLE_DEFERRED_COMPILATION_TV);
41079 				setState(5632);
41080 				match(SQ_);
41081 				}
41082 				break;
41083 			case 6:
41084 				enterOuterAlt(_localctx, 6);
41085 				{
41086 				setState(5633);
41087 				match(SQ_);
41088 				setState(5634);
41089 				match(DISABLE_INTERLEAVED_EXECUTION_TVF);
41090 				setState(5635);
41091 				match(SQ_);
41092 				}
41093 				break;
41094 			case 7:
41095 				enterOuterAlt(_localctx, 7);
41096 				{
41097 				setState(5636);
41098 				match(SQ_);
41099 				setState(5637);
41100 				match(DISABLE_OPTIMIZED_NESTED_LOOP);
41101 				setState(5638);
41102 				match(SQ_);
41103 				}
41104 				break;
41105 			case 8:
41106 				enterOuterAlt(_localctx, 8);
41107 				{
41108 				setState(5639);
41109 				match(SQ_);
41110 				setState(5640);
41111 				match(DISABLE_OPTIMIZER_ROWGOAL);
41112 				setState(5641);
41113 				match(SQ_);
41114 				}
41115 				break;
41116 			case 9:
41117 				enterOuterAlt(_localctx, 9);
41118 				{
41119 				setState(5642);
41120 				match(SQ_);
41121 				setState(5643);
41122 				match(DISABLE_PARAMETER_SNIFFING);
41123 				setState(5644);
41124 				match(SQ_);
41125 				}
41126 				break;
41127 			case 10:
41128 				enterOuterAlt(_localctx, 10);
41129 				{
41130 				setState(5645);
41131 				match(SQ_);
41132 				setState(5646);
41133 				match(DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK);
41134 				setState(5647);
41135 				match(SQ_);
41136 				}
41137 				break;
41138 			case 11:
41139 				enterOuterAlt(_localctx, 11);
41140 				{
41141 				setState(5648);
41142 				match(SQ_);
41143 				setState(5649);
41144 				match(DISABLE_TSQL_SCALAR_UDF_INLINING);
41145 				setState(5650);
41146 				match(SQ_);
41147 				}
41148 				break;
41149 			case 12:
41150 				enterOuterAlt(_localctx, 12);
41151 				{
41152 				setState(5651);
41153 				match(SQ_);
41154 				setState(5652);
41155 				match(DISALLOW_BATCH_MODE);
41156 				setState(5653);
41157 				match(SQ_);
41158 				}
41159 				break;
41160 			case 13:
41161 				enterOuterAlt(_localctx, 13);
41162 				{
41163 				setState(5654);
41164 				match(SQ_);
41165 				setState(5655);
41166 				match(ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS);
41167 				setState(5656);
41168 				match(SQ_);
41169 				}
41170 				break;
41171 			case 14:
41172 				enterOuterAlt(_localctx, 14);
41173 				{
41174 				setState(5657);
41175 				match(SQ_);
41176 				setState(5658);
41177 				match(ENABLE_QUERY_OPTIMIZER_HOTFIXES);
41178 				setState(5659);
41179 				match(SQ_);
41180 				}
41181 				break;
41182 			case 15:
41183 				enterOuterAlt(_localctx, 15);
41184 				{
41185 				setState(5660);
41186 				match(SQ_);
41187 				setState(5661);
41188 				match(FORCE_DEFAULT_CARDINALITY_ESTIMATION);
41189 				setState(5662);
41190 				match(SQ_);
41191 				}
41192 				break;
41193 			case 16:
41194 				enterOuterAlt(_localctx, 16);
41195 				{
41196 				setState(5663);
41197 				match(SQ_);
41198 				setState(5664);
41199 				match(FORCE_LEGACY_CARDINALITY_ESTIMATION);
41200 				setState(5665);
41201 				match(SQ_);
41202 				}
41203 				break;
41204 			case 17:
41205 				enterOuterAlt(_localctx, 17);
41206 				{
41207 				setState(5666);
41208 				match(SQ_);
41209 				setState(5667);
41210 				match(QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n);
41211 				setState(5668);
41212 				match(SQ_);
41213 				}
41214 				break;
41215 			case 18:
41216 				enterOuterAlt(_localctx, 18);
41217 				{
41218 				setState(5669);
41219 				match(SQ_);
41220 				setState(5670);
41221 				match(QUERY_PLAN_PROFILE);
41222 				setState(5671);
41223 				match(SQ_);
41224 				}
41225 				break;
41226 			}
41227 		}
41228 		catch (RecognitionException re) {
41229 			_localctx.exception = re;
41230 			_errHandler.reportError(this, re);
41231 			_errHandler.recover(this, re);
41232 		}
41233 		finally {
41234 			exitRule();
41235 		}
41236 		return _localctx;
41237 	}
41238 
41239 	public static class ForClauseContext extends ParserRuleContext {
41240 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
41241 		public TerminalNode BROWSE() { return getToken(SQLServerStatementParser.BROWSE, 0); }
41242 		public ForXmlClauseContext forXmlClause() {
41243 			return getRuleContext(ForXmlClauseContext.class,0);
41244 		}
41245 		public ForJsonClauseContext forJsonClause() {
41246 			return getRuleContext(ForJsonClauseContext.class,0);
41247 		}
41248 		public ForClauseContext(ParserRuleContext parent, int invokingState) {
41249 			super(parent, invokingState);
41250 		}
41251 		@Override public int getRuleIndex() { return RULE_forClause; }
41252 		@Override
41253 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41254 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForClause(this);
41255 			else return visitor.visitChildren(this);
41256 		}
41257 	}
41258 
41259 	public final ForClauseContext forClause() throws RecognitionException {
41260 		ForClauseContext _localctx = new ForClauseContext(_ctx, getState());
41261 		enterRule(_localctx, 794, RULE_forClause);
41262 		try {
41263 			enterOuterAlt(_localctx, 1);
41264 			{
41265 			setState(5674);
41266 			match(FOR);
41267 			setState(5678);
41268 			_errHandler.sync(this);
41269 			switch (_input.LA(1)) {
41270 			case BROWSE:
41271 				{
41272 				setState(5675);
41273 				match(BROWSE);
41274 				}
41275 				break;
41276 			case XML:
41277 				{
41278 				setState(5676);
41279 				forXmlClause();
41280 				}
41281 				break;
41282 			case JSON:
41283 				{
41284 				setState(5677);
41285 				forJsonClause();
41286 				}
41287 				break;
41288 			default:
41289 				throw new NoViableAltException(this);
41290 			}
41291 			}
41292 		}
41293 		catch (RecognitionException re) {
41294 			_localctx.exception = re;
41295 			_errHandler.reportError(this, re);
41296 			_errHandler.recover(this, re);
41297 		}
41298 		finally {
41299 			exitRule();
41300 		}
41301 		return _localctx;
41302 	}
41303 
41304 	public static class ForXmlClauseContext extends ParserRuleContext {
41305 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
41306 		public TerminalNode EXPLICIT() { return getToken(SQLServerStatementParser.EXPLICIT, 0); }
41307 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
41308 		public TerminalNode RAW() { return getToken(SQLServerStatementParser.RAW, 0); }
41309 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
41310 		public CommonDirectivesForXmlContext commonDirectivesForXml() {
41311 			return getRuleContext(CommonDirectivesForXmlContext.class,0);
41312 		}
41313 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
41314 		public TerminalNode LP_(int i) {
41315 			return getToken(SQLServerStatementParser.LP_, i);
41316 		}
41317 		public List<StringLiteralsContext> stringLiterals() {
41318 			return getRuleContexts(StringLiteralsContext.class);
41319 		}
41320 		public StringLiteralsContext stringLiterals(int i) {
41321 			return getRuleContext(StringLiteralsContext.class,i);
41322 		}
41323 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
41324 		public TerminalNode RP_(int i) {
41325 			return getToken(SQLServerStatementParser.RP_, i);
41326 		}
41327 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41328 		public TerminalNode COMMA_(int i) {
41329 			return getToken(SQLServerStatementParser.COMMA_, i);
41330 		}
41331 		public TerminalNode ELEMENTS() { return getToken(SQLServerStatementParser.ELEMENTS, 0); }
41332 		public TerminalNode XMLDATA() { return getToken(SQLServerStatementParser.XMLDATA, 0); }
41333 		public TerminalNode XMLSCHEMA() { return getToken(SQLServerStatementParser.XMLSCHEMA, 0); }
41334 		public TerminalNode XSINIL() { return getToken(SQLServerStatementParser.XSINIL, 0); }
41335 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
41336 		public ForXmlClauseContext(ParserRuleContext parent, int invokingState) {
41337 			super(parent, invokingState);
41338 		}
41339 		@Override public int getRuleIndex() { return RULE_forXmlClause; }
41340 		@Override
41341 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41342 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForXmlClause(this);
41343 			else return visitor.visitChildren(this);
41344 		}
41345 	}
41346 
41347 	public final ForXmlClauseContext forXmlClause() throws RecognitionException {
41348 		ForXmlClauseContext _localctx = new ForXmlClauseContext(_ctx, getState());
41349 		enterRule(_localctx, 796, RULE_forXmlClause);
41350 		int _la;
41351 		try {
41352 			enterOuterAlt(_localctx, 1);
41353 			{
41354 			setState(5680);
41355 			match(XML);
41356 			setState(5739);
41357 			_errHandler.sync(this);
41358 			switch (_input.LA(1)) {
41359 			case AUTO:
41360 			case RAW:
41361 				{
41362 				setState(5689);
41363 				_errHandler.sync(this);
41364 				switch (_input.LA(1)) {
41365 				case RAW:
41366 					{
41367 					setState(5681);
41368 					match(RAW);
41369 					setState(5686);
41370 					_errHandler.sync(this);
41371 					_la = _input.LA(1);
41372 					if (_la==LP_) {
41373 						{
41374 						setState(5682);
41375 						match(LP_);
41376 						setState(5683);
41377 						stringLiterals();
41378 						setState(5684);
41379 						match(RP_);
41380 						}
41381 					}
41382 
41383 					}
41384 					break;
41385 				case AUTO:
41386 					{
41387 					setState(5688);
41388 					match(AUTO);
41389 					}
41390 					break;
41391 				default:
41392 					throw new NoViableAltException(this);
41393 				}
41394 				setState(5712);
41395 				_errHandler.sync(this);
41396 				switch ( getInterpreter().adaptivePredict(_input,655,_ctx) ) {
41397 				case 1:
41398 					{
41399 					setState(5691);
41400 					commonDirectivesForXml();
41401 					setState(5703);
41402 					_errHandler.sync(this);
41403 					switch ( getInterpreter().adaptivePredict(_input,652,_ctx) ) {
41404 					case 1:
41405 						{
41406 						setState(5692);
41407 						match(COMMA_);
41408 						setState(5701);
41409 						_errHandler.sync(this);
41410 						switch (_input.LA(1)) {
41411 						case XMLDATA:
41412 							{
41413 							setState(5693);
41414 							match(XMLDATA);
41415 							}
41416 							break;
41417 						case XMLSCHEMA:
41418 							{
41419 							setState(5694);
41420 							match(XMLSCHEMA);
41421 							setState(5699);
41422 							_errHandler.sync(this);
41423 							_la = _input.LA(1);
41424 							if (_la==LP_) {
41425 								{
41426 								setState(5695);
41427 								match(LP_);
41428 								setState(5696);
41429 								stringLiterals();
41430 								setState(5697);
41431 								match(RP_);
41432 								}
41433 							}
41434 
41435 							}
41436 							break;
41437 						default:
41438 							throw new NoViableAltException(this);
41439 						}
41440 						}
41441 						break;
41442 					}
41443 					setState(5710);
41444 					_errHandler.sync(this);
41445 					_la = _input.LA(1);
41446 					if (_la==COMMA_) {
41447 						{
41448 						setState(5705);
41449 						match(COMMA_);
41450 						setState(5706);
41451 						match(ELEMENTS);
41452 						setState(5708);
41453 						_errHandler.sync(this);
41454 						_la = _input.LA(1);
41455 						if (_la==XSINIL || _la==ABSENT) {
41456 							{
41457 							setState(5707);
41458 							_la = _input.LA(1);
41459 							if ( !(_la==XSINIL || _la==ABSENT) ) {
41460 							_errHandler.recoverInline(this);
41461 							}
41462 							else {
41463 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41464 								_errHandler.reportMatch(this);
41465 								consume();
41466 							}
41467 							}
41468 						}
41469 
41470 						}
41471 					}
41472 
41473 					}
41474 					break;
41475 				}
41476 				}
41477 				break;
41478 			case EXPLICIT:
41479 				{
41480 				setState(5714);
41481 				match(EXPLICIT);
41482 				setState(5720);
41483 				_errHandler.sync(this);
41484 				switch ( getInterpreter().adaptivePredict(_input,657,_ctx) ) {
41485 				case 1:
41486 					{
41487 					setState(5715);
41488 					commonDirectivesForXml();
41489 					setState(5718);
41490 					_errHandler.sync(this);
41491 					_la = _input.LA(1);
41492 					if (_la==COMMA_) {
41493 						{
41494 						setState(5716);
41495 						match(COMMA_);
41496 						setState(5717);
41497 						match(XMLDATA);
41498 						}
41499 					}
41500 
41501 					}
41502 					break;
41503 				}
41504 				}
41505 				break;
41506 			case PATH:
41507 				{
41508 				setState(5722);
41509 				match(PATH);
41510 				setState(5727);
41511 				_errHandler.sync(this);
41512 				_la = _input.LA(1);
41513 				if (_la==LP_) {
41514 					{
41515 					setState(5723);
41516 					match(LP_);
41517 					setState(5724);
41518 					stringLiterals();
41519 					setState(5725);
41520 					match(RP_);
41521 					}
41522 				}
41523 
41524 				setState(5737);
41525 				_errHandler.sync(this);
41526 				switch ( getInterpreter().adaptivePredict(_input,661,_ctx) ) {
41527 				case 1:
41528 					{
41529 					setState(5729);
41530 					commonDirectivesForXml();
41531 					setState(5735);
41532 					_errHandler.sync(this);
41533 					_la = _input.LA(1);
41534 					if (_la==COMMA_) {
41535 						{
41536 						setState(5730);
41537 						match(COMMA_);
41538 						setState(5731);
41539 						match(ELEMENTS);
41540 						setState(5733);
41541 						_errHandler.sync(this);
41542 						_la = _input.LA(1);
41543 						if (_la==XSINIL || _la==ABSENT) {
41544 							{
41545 							setState(5732);
41546 							_la = _input.LA(1);
41547 							if ( !(_la==XSINIL || _la==ABSENT) ) {
41548 							_errHandler.recoverInline(this);
41549 							}
41550 							else {
41551 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41552 								_errHandler.reportMatch(this);
41553 								consume();
41554 							}
41555 							}
41556 						}
41557 
41558 						}
41559 					}
41560 
41561 					}
41562 					break;
41563 				}
41564 				}
41565 				break;
41566 			default:
41567 				throw new NoViableAltException(this);
41568 			}
41569 			}
41570 		}
41571 		catch (RecognitionException re) {
41572 			_localctx.exception = re;
41573 			_errHandler.reportError(this, re);
41574 			_errHandler.recover(this, re);
41575 		}
41576 		finally {
41577 			exitRule();
41578 		}
41579 		return _localctx;
41580 	}
41581 
41582 	public static class CommonDirectivesForXmlContext extends ParserRuleContext {
41583 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41584 		public TerminalNode COMMA_(int i) {
41585 			return getToken(SQLServerStatementParser.COMMA_, i);
41586 		}
41587 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
41588 		public TerminalNode BASE64() { return getToken(SQLServerStatementParser.BASE64, 0); }
41589 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
41590 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
41591 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
41592 		public StringLiteralsContext stringLiterals() {
41593 			return getRuleContext(StringLiteralsContext.class,0);
41594 		}
41595 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
41596 		public CommonDirectivesForXmlContext(ParserRuleContext parent, int invokingState) {
41597 			super(parent, invokingState);
41598 		}
41599 		@Override public int getRuleIndex() { return RULE_commonDirectivesForXml; }
41600 		@Override
41601 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41602 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonDirectivesForXml(this);
41603 			else return visitor.visitChildren(this);
41604 		}
41605 	}
41606 
41607 	public final CommonDirectivesForXmlContext commonDirectivesForXml() throws RecognitionException {
41608 		CommonDirectivesForXmlContext _localctx = new CommonDirectivesForXmlContext(_ctx, getState());
41609 		enterRule(_localctx, 798, RULE_commonDirectivesForXml);
41610 		int _la;
41611 		try {
41612 			enterOuterAlt(_localctx, 1);
41613 			{
41614 			setState(5744);
41615 			_errHandler.sync(this);
41616 			switch ( getInterpreter().adaptivePredict(_input,663,_ctx) ) {
41617 			case 1:
41618 				{
41619 				setState(5741);
41620 				match(COMMA_);
41621 				setState(5742);
41622 				match(BINARY);
41623 				setState(5743);
41624 				match(BASE64);
41625 				}
41626 				break;
41627 			}
41628 			setState(5748);
41629 			_errHandler.sync(this);
41630 			switch ( getInterpreter().adaptivePredict(_input,664,_ctx) ) {
41631 			case 1:
41632 				{
41633 				setState(5746);
41634 				match(COMMA_);
41635 				setState(5747);
41636 				match(TYPE);
41637 				}
41638 				break;
41639 			}
41640 			setState(5758);
41641 			_errHandler.sync(this);
41642 			switch ( getInterpreter().adaptivePredict(_input,666,_ctx) ) {
41643 			case 1:
41644 				{
41645 				setState(5750);
41646 				match(COMMA_);
41647 				setState(5751);
41648 				match(ROOT);
41649 				setState(5756);
41650 				_errHandler.sync(this);
41651 				_la = _input.LA(1);
41652 				if (_la==LP_) {
41653 					{
41654 					setState(5752);
41655 					match(LP_);
41656 					setState(5753);
41657 					stringLiterals();
41658 					setState(5754);
41659 					match(RP_);
41660 					}
41661 				}
41662 
41663 				}
41664 				break;
41665 			}
41666 			}
41667 		}
41668 		catch (RecognitionException re) {
41669 			_localctx.exception = re;
41670 			_errHandler.reportError(this, re);
41671 			_errHandler.recover(this, re);
41672 		}
41673 		finally {
41674 			exitRule();
41675 		}
41676 		return _localctx;
41677 	}
41678 
41679 	public static class ForJsonClauseContext extends ParserRuleContext {
41680 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
41681 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
41682 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
41683 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41684 		public TerminalNode COMMA_(int i) {
41685 			return getToken(SQLServerStatementParser.COMMA_, i);
41686 		}
41687 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
41688 		public TerminalNode INCLUDE_NULL_VALUES() { return getToken(SQLServerStatementParser.INCLUDE_NULL_VALUES, 0); }
41689 		public TerminalNode WITHOUT_ARRAY_WRAPPER() { return getToken(SQLServerStatementParser.WITHOUT_ARRAY_WRAPPER, 0); }
41690 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
41691 		public StringLiteralsContext stringLiterals() {
41692 			return getRuleContext(StringLiteralsContext.class,0);
41693 		}
41694 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
41695 		public ForJsonClauseContext(ParserRuleContext parent, int invokingState) {
41696 			super(parent, invokingState);
41697 		}
41698 		@Override public int getRuleIndex() { return RULE_forJsonClause; }
41699 		@Override
41700 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41701 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForJsonClause(this);
41702 			else return visitor.visitChildren(this);
41703 		}
41704 	}
41705 
41706 	public final ForJsonClauseContext forJsonClause() throws RecognitionException {
41707 		ForJsonClauseContext _localctx = new ForJsonClauseContext(_ctx, getState());
41708 		enterRule(_localctx, 800, RULE_forJsonClause);
41709 		int _la;
41710 		try {
41711 			enterOuterAlt(_localctx, 1);
41712 			{
41713 			setState(5760);
41714 			match(JSON);
41715 			{
41716 			setState(5761);
41717 			_la = _input.LA(1);
41718 			if ( !(_la==AUTO || _la==PATH) ) {
41719 			_errHandler.recoverInline(this);
41720 			}
41721 			else {
41722 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41723 				_errHandler.reportMatch(this);
41724 				consume();
41725 			}
41726 			setState(5780);
41727 			_errHandler.sync(this);
41728 			switch ( getInterpreter().adaptivePredict(_input,671,_ctx) ) {
41729 			case 1:
41730 				{
41731 				setState(5770);
41732 				_errHandler.sync(this);
41733 				switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) {
41734 				case 1:
41735 					{
41736 					setState(5762);
41737 					match(COMMA_);
41738 					setState(5763);
41739 					match(ROOT);
41740 					setState(5768);
41741 					_errHandler.sync(this);
41742 					_la = _input.LA(1);
41743 					if (_la==LP_) {
41744 						{
41745 						setState(5764);
41746 						match(LP_);
41747 						setState(5765);
41748 						stringLiterals();
41749 						setState(5766);
41750 						match(RP_);
41751 						}
41752 					}
41753 
41754 					}
41755 					break;
41756 				}
41757 				setState(5774);
41758 				_errHandler.sync(this);
41759 				switch ( getInterpreter().adaptivePredict(_input,669,_ctx) ) {
41760 				case 1:
41761 					{
41762 					setState(5772);
41763 					match(COMMA_);
41764 					setState(5773);
41765 					match(INCLUDE_NULL_VALUES);
41766 					}
41767 					break;
41768 				}
41769 				setState(5778);
41770 				_errHandler.sync(this);
41771 				_la = _input.LA(1);
41772 				if (_la==COMMA_) {
41773 					{
41774 					setState(5776);
41775 					match(COMMA_);
41776 					setState(5777);
41777 					match(WITHOUT_ARRAY_WRAPPER);
41778 					}
41779 				}
41780 
41781 				}
41782 				break;
41783 			}
41784 			}
41785 			}
41786 		}
41787 		catch (RecognitionException re) {
41788 			_localctx.exception = re;
41789 			_errHandler.reportError(this, re);
41790 			_errHandler.recover(this, re);
41791 		}
41792 		finally {
41793 			exitRule();
41794 		}
41795 		return _localctx;
41796 	}
41797 
41798 	public static class SelectWithClauseContext extends ParserRuleContext {
41799 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
41800 		public XmlNamespacesClauseContext xmlNamespacesClause() {
41801 			return getRuleContext(XmlNamespacesClauseContext.class,0);
41802 		}
41803 		public CteClauseSetContext cteClauseSet() {
41804 			return getRuleContext(CteClauseSetContext.class,0);
41805 		}
41806 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
41807 		public SelectWithClauseContext(ParserRuleContext parent, int invokingState) {
41808 			super(parent, invokingState);
41809 		}
41810 		@Override public int getRuleIndex() { return RULE_selectWithClause; }
41811 		@Override
41812 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41813 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectWithClause(this);
41814 			else return visitor.visitChildren(this);
41815 		}
41816 	}
41817 
41818 	public final SelectWithClauseContext selectWithClause() throws RecognitionException {
41819 		SelectWithClauseContext _localctx = new SelectWithClauseContext(_ctx, getState());
41820 		enterRule(_localctx, 802, RULE_selectWithClause);
41821 		int _la;
41822 		try {
41823 			enterOuterAlt(_localctx, 1);
41824 			{
41825 			setState(5782);
41826 			match(WITH);
41827 			setState(5787);
41828 			_errHandler.sync(this);
41829 			_la = _input.LA(1);
41830 			if (_la==XMLNAMESPACES) {
41831 				{
41832 				setState(5783);
41833 				xmlNamespacesClause();
41834 				setState(5785);
41835 				_errHandler.sync(this);
41836 				_la = _input.LA(1);
41837 				if (_la==COMMA_) {
41838 					{
41839 					setState(5784);
41840 					match(COMMA_);
41841 					}
41842 				}
41843 
41844 				}
41845 			}
41846 
41847 			setState(5790);
41848 			_errHandler.sync(this);
41849 			_la = _input.LA(1);
41850 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 504)) & ~0x3f) == 0 && ((1L << (_la - 504)) & ((1L << (FILENAME - 504)) | (1L << (SIZE - 504)) | (1L << (MAXSIZE - 504)) | (1L << (FILEGROWTH - 504)) | (1L << (UNLIMITED - 504)) | (1L << (KB - 504)) | (1L << (MB - 504)) | (1L << (GB - 504)) | (1L << (TB - 504)) | (1L << (CONTAINS - 504)) | (1L << (MEMORY_OPTIMIZED_DATA - 504)) | (1L << (FILEGROUP - 504)) | (1L << (NON_TRANSACTED_ACCESS - 504)) | (1L << (DB_CHAINING - 504)) | (1L << (TRUSTWORTHY - 504)) | (1L << (FORWARD_ONLY - 504)) | (1L << (KEYSET - 504)) | (1L << (FAST_FORWARD - 504)) | (1L << (SCROLL_LOCKS - 504)) | (1L << (OPTIMISTIC - 504)) | (1L << (TYPE_WARNING - 504)) | (1L << (SCHEMABINDING - 504)) | (1L << (CALLER - 504)) | (1L << (INPUT - 504)) | (1L << (OWNER - 504)) | (1L << (SNAPSHOT - 504)) | (1L << (REPEATABLE - 504)) | (1L << (SERIALIZABLE - 504)) | (1L << (NATIVE_COMPILATION - 504)) | (1L << (VIEW_METADATA - 504)) | (1L << (INSTEAD - 504)) | (1L << (APPEND - 504)) | (1L << (INCREMENT - 504)) | (1L << (CACHE - 504)) | (1L << (MINVALUE - 504)) | (1L << (MAXVALUE - 504)) | (1L << (RESTART - 504)) | (1L << (LOB_COMPACTION - 504)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 504)) | (1L << (REORGANIZE - 504)) | (1L << (RESUME - 504)) | (1L << (PAUSE - 504)) | (1L << (ABORT - 504)))) != 0) || ((((_la - 570)) & ~0x3f) == 0 && ((1L << (_la - 570)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 570)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 570)) | (1L << (IMMEDIATE - 570)) | (1L << (NO_WAIT - 570)) | (1L << (TARGET_RECOVERY_TIME - 570)) | (1L << (SECONDS - 570)) | (1L << (HONOR_BROKER_PRIORITY - 570)) | (1L << (ERROR_BROKER_CONVERSATIONS - 570)) | (1L << (NEW_BROKER - 570)) | (1L << (DISABLE_BROKER - 570)) | (1L << (ENABLE_BROKER - 570)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 570)) | (1L << (READ_COMMITTED_SNAPSHOT - 570)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 570)) | (1L << (RECURSIVE_TRIGGERS - 570)) | (1L << (QUOTED_IDENTIFIER - 570)) | (1L << (NUMERIC_ROUNDABORT - 570)) | (1L << (CONCAT_NULL_YIELDS_NULL - 570)) | (1L << (COMPATIBILITY_LEVEL - 570)) | (1L << (ARITHABORT - 570)) | (1L << (ANSI_WARNINGS - 570)) | (1L << (ANSI_PADDING - 570)) | (1L << (ANSI_NULLS - 570)) | (1L << (ANSI_NULL_DEFAULT - 570)) | (1L << (PAGE_VERIFY - 570)) | (1L << (CHECKSUM - 570)) | (1L << (TORN_PAGE_DETECTION - 570)) | (1L << (BULK_LOGGED - 570)) | (1L << (RECOVERY - 570)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 570)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 570)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 570)) | (1L << (EXECUTION_COUNT - 570)) | (1L << (QUERY_CAPTURE_POLICY - 570)) | (1L << (WAIT_STATS_CAPTURE_MODE - 570)) | (1L << (MAX_PLANS_PER_QUERY - 570)) | (1L << (QUERY_CAPTURE_MODE - 570)) | (1L << (SIZE_BASED_CLEANUP_MODE - 570)) | (1L << (INTERVAL_LENGTH_MINUTES - 570)) | (1L << (MAX_STORAGE_SIZE_MB - 570)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 570)) | (1L << (CLEANUP_POLICY - 570)) | (1L << (CUSTOM - 570)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 570)) | (1L << (OPERATION_MODE - 570)) | (1L << (QUERY_STORE - 570)) | (1L << (CURSOR_DEFAULT - 570)) | (1L << (GLOBAL - 570)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 570)) | (1L << (HOURS - 570)) | (1L << (CHANGE_RETENTION - 570)) | (1L << (AUTO_CLEANUP - 570)) | (1L << (CHANGE_TRACKING - 570)) | (1L << (AUTOMATIC_TUNING - 570)) | (1L << (FORCE_LAST_GOOD_PLAN - 570)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 570)) | (1L << (AUTO_UPDATE_STATISTICS - 570)) | (1L << (AUTO_SHRINK - 570)) | (1L << (AUTO_CREATE_STATISTICS - 570)) | (1L << (INCREMENTAL - 570)) | (1L << (AUTO_CLOSE - 570)) | (1L << (DATA_RETENTION - 570)) | (1L << (TEMPORAL_HISTORY_RETENTION - 570)) | (1L << (EDITION - 570)))) != 0) || ((((_la - 634)) & ~0x3f) == 0 && ((1L << (_la - 634)) & ((1L << (MIXED_PAGE_ALLOCATION - 634)) | (1L << (DISABLED - 634)) | (1L << (ALLOWED - 634)) | (1L << (HADR - 634)) | (1L << (MULTI_USER - 634)) | (1L << (RESTRICTED_USER - 634)) | (1L << (SINGLE_USER - 634)) | (1L << (OFFLINE - 634)) | (1L << (EMERGENCY - 634)) | (1L << (SUSPEND - 634)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 634)) | (1L << (ELASTIC_POOL - 634)) | (1L << (SERVICE_OBJECTIVE - 634)) | (1L << (DATABASE_NAME - 634)) | (1L << (ALLOW_CONNECTIONS - 634)) | (1L << (GEO - 634)) | (1L << (NAMED - 634)) | (1L << (DATEFIRST - 634)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 634)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 634)) | (1L << (SECONDARY - 634)) | (1L << (FAILOVER - 634)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 634)) | (1L << (DEFAULT_LANGUAGE - 634)) | (1L << (INLINE - 634)) | (1L << (NESTED_TRIGGERS - 634)) | (1L << (TRANSFORM_NOISE_WORDS - 634)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 634)) | (1L << (PERSISTENT_LOG_BUFFER - 634)) | (1L << (DIRECTORY_NAME - 634)) | (1L << (DATEFORMAT - 634)) | (1L << (DELAYED_DURABILITY - 634)) | (1L << (AUTHORIZATION - 634)) | (1L << (TRANSFER - 634)) | (1L << (PROVIDER - 634)) | (1L << (SEARCH - 634)) | (1L << (MEMBER - 634)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
41851 				{
41852 				setState(5789);
41853 				cteClauseSet();
41854 				}
41855 			}
41856 
41857 			}
41858 		}
41859 		catch (RecognitionException re) {
41860 			_localctx.exception = re;
41861 			_errHandler.reportError(this, re);
41862 			_errHandler.recover(this, re);
41863 		}
41864 		finally {
41865 			exitRule();
41866 		}
41867 		return _localctx;
41868 	}
41869 
41870 	public static class XmlNamespacesClauseContext extends ParserRuleContext {
41871 		public TerminalNode XMLNAMESPACES() { return getToken(SQLServerStatementParser.XMLNAMESPACES, 0); }
41872 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
41873 		public List<XmlNamespaceDeclarationItemContext> xmlNamespaceDeclarationItem() {
41874 			return getRuleContexts(XmlNamespaceDeclarationItemContext.class);
41875 		}
41876 		public XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem(int i) {
41877 			return getRuleContext(XmlNamespaceDeclarationItemContext.class,i);
41878 		}
41879 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
41880 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41881 		public TerminalNode COMMA_(int i) {
41882 			return getToken(SQLServerStatementParser.COMMA_, i);
41883 		}
41884 		public XmlNamespacesClauseContext(ParserRuleContext parent, int invokingState) {
41885 			super(parent, invokingState);
41886 		}
41887 		@Override public int getRuleIndex() { return RULE_xmlNamespacesClause; }
41888 		@Override
41889 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41890 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacesClause(this);
41891 			else return visitor.visitChildren(this);
41892 		}
41893 	}
41894 
41895 	public final XmlNamespacesClauseContext xmlNamespacesClause() throws RecognitionException {
41896 		XmlNamespacesClauseContext _localctx = new XmlNamespacesClauseContext(_ctx, getState());
41897 		enterRule(_localctx, 804, RULE_xmlNamespacesClause);
41898 		int _la;
41899 		try {
41900 			enterOuterAlt(_localctx, 1);
41901 			{
41902 			setState(5792);
41903 			match(XMLNAMESPACES);
41904 			setState(5793);
41905 			match(LP_);
41906 			setState(5794);
41907 			xmlNamespaceDeclarationItem();
41908 			setState(5799);
41909 			_errHandler.sync(this);
41910 			_la = _input.LA(1);
41911 			while (_la==COMMA_) {
41912 				{
41913 				{
41914 				setState(5795);
41915 				match(COMMA_);
41916 				setState(5796);
41917 				xmlNamespaceDeclarationItem();
41918 				}
41919 				}
41920 				setState(5801);
41921 				_errHandler.sync(this);
41922 				_la = _input.LA(1);
41923 			}
41924 			setState(5802);
41925 			match(RP_);
41926 			}
41927 		}
41928 		catch (RecognitionException re) {
41929 			_localctx.exception = re;
41930 			_errHandler.reportError(this, re);
41931 			_errHandler.recover(this, re);
41932 		}
41933 		finally {
41934 			exitRule();
41935 		}
41936 		return _localctx;
41937 	}
41938 
41939 	public static class XmlNamespaceDeclarationItemContext extends ParserRuleContext {
41940 		public XmlNamespaceUriContext xmlNamespaceUri() {
41941 			return getRuleContext(XmlNamespaceUriContext.class,0);
41942 		}
41943 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
41944 		public XmlNamespacePrefixContext xmlNamespacePrefix() {
41945 			return getRuleContext(XmlNamespacePrefixContext.class,0);
41946 		}
41947 		public XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() {
41948 			return getRuleContext(XmlDefaultNamespaceDeclarationItemContext.class,0);
41949 		}
41950 		public XmlNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
41951 			super(parent, invokingState);
41952 		}
41953 		@Override public int getRuleIndex() { return RULE_xmlNamespaceDeclarationItem; }
41954 		@Override
41955 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41956 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceDeclarationItem(this);
41957 			else return visitor.visitChildren(this);
41958 		}
41959 	}
41960 
41961 	public final XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem() throws RecognitionException {
41962 		XmlNamespaceDeclarationItemContext _localctx = new XmlNamespaceDeclarationItemContext(_ctx, getState());
41963 		enterRule(_localctx, 806, RULE_xmlNamespaceDeclarationItem);
41964 		try {
41965 			setState(5809);
41966 			_errHandler.sync(this);
41967 			switch (_input.LA(1)) {
41968 			case STRING_:
41969 			case NCHAR_TEXT:
41970 				enterOuterAlt(_localctx, 1);
41971 				{
41972 				setState(5804);
41973 				xmlNamespaceUri();
41974 				setState(5805);
41975 				match(AS);
41976 				setState(5806);
41977 				xmlNamespacePrefix();
41978 				}
41979 				break;
41980 			case DEFAULT:
41981 				enterOuterAlt(_localctx, 2);
41982 				{
41983 				setState(5808);
41984 				xmlDefaultNamespaceDeclarationItem();
41985 				}
41986 				break;
41987 			default:
41988 				throw new NoViableAltException(this);
41989 			}
41990 		}
41991 		catch (RecognitionException re) {
41992 			_localctx.exception = re;
41993 			_errHandler.reportError(this, re);
41994 			_errHandler.recover(this, re);
41995 		}
41996 		finally {
41997 			exitRule();
41998 		}
41999 		return _localctx;
42000 	}
42001 
42002 	public static class XmlNamespaceUriContext extends ParserRuleContext {
42003 		public StringLiteralsContext stringLiterals() {
42004 			return getRuleContext(StringLiteralsContext.class,0);
42005 		}
42006 		public XmlNamespaceUriContext(ParserRuleContext parent, int invokingState) {
42007 			super(parent, invokingState);
42008 		}
42009 		@Override public int getRuleIndex() { return RULE_xmlNamespaceUri; }
42010 		@Override
42011 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42012 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceUri(this);
42013 			else return visitor.visitChildren(this);
42014 		}
42015 	}
42016 
42017 	public final XmlNamespaceUriContext xmlNamespaceUri() throws RecognitionException {
42018 		XmlNamespaceUriContext _localctx = new XmlNamespaceUriContext(_ctx, getState());
42019 		enterRule(_localctx, 808, RULE_xmlNamespaceUri);
42020 		try {
42021 			enterOuterAlt(_localctx, 1);
42022 			{
42023 			setState(5811);
42024 			stringLiterals();
42025 			}
42026 		}
42027 		catch (RecognitionException re) {
42028 			_localctx.exception = re;
42029 			_errHandler.reportError(this, re);
42030 			_errHandler.recover(this, re);
42031 		}
42032 		finally {
42033 			exitRule();
42034 		}
42035 		return _localctx;
42036 	}
42037 
42038 	public static class XmlNamespacePrefixContext extends ParserRuleContext {
42039 		public IdentifierContext identifier() {
42040 			return getRuleContext(IdentifierContext.class,0);
42041 		}
42042 		public XmlNamespacePrefixContext(ParserRuleContext parent, int invokingState) {
42043 			super(parent, invokingState);
42044 		}
42045 		@Override public int getRuleIndex() { return RULE_xmlNamespacePrefix; }
42046 		@Override
42047 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42048 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacePrefix(this);
42049 			else return visitor.visitChildren(this);
42050 		}
42051 	}
42052 
42053 	public final XmlNamespacePrefixContext xmlNamespacePrefix() throws RecognitionException {
42054 		XmlNamespacePrefixContext _localctx = new XmlNamespacePrefixContext(_ctx, getState());
42055 		enterRule(_localctx, 810, RULE_xmlNamespacePrefix);
42056 		try {
42057 			enterOuterAlt(_localctx, 1);
42058 			{
42059 			setState(5813);
42060 			identifier();
42061 			}
42062 		}
42063 		catch (RecognitionException re) {
42064 			_localctx.exception = re;
42065 			_errHandler.reportError(this, re);
42066 			_errHandler.recover(this, re);
42067 		}
42068 		finally {
42069 			exitRule();
42070 		}
42071 		return _localctx;
42072 	}
42073 
42074 	public static class XmlDefaultNamespaceDeclarationItemContext extends ParserRuleContext {
42075 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
42076 		public XmlNamespaceUriContext xmlNamespaceUri() {
42077 			return getRuleContext(XmlNamespaceUriContext.class,0);
42078 		}
42079 		public XmlDefaultNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
42080 			super(parent, invokingState);
42081 		}
42082 		@Override public int getRuleIndex() { return RULE_xmlDefaultNamespaceDeclarationItem; }
42083 		@Override
42084 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42085 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlDefaultNamespaceDeclarationItem(this);
42086 			else return visitor.visitChildren(this);
42087 		}
42088 	}
42089 
42090 	public final XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() throws RecognitionException {
42091 		XmlDefaultNamespaceDeclarationItemContext _localctx = new XmlDefaultNamespaceDeclarationItemContext(_ctx, getState());
42092 		enterRule(_localctx, 812, RULE_xmlDefaultNamespaceDeclarationItem);
42093 		try {
42094 			enterOuterAlt(_localctx, 1);
42095 			{
42096 			setState(5815);
42097 			match(DEFAULT);
42098 			setState(5816);
42099 			xmlNamespaceUri();
42100 			}
42101 		}
42102 		catch (RecognitionException re) {
42103 			_localctx.exception = re;
42104 			_errHandler.reportError(this, re);
42105 			_errHandler.recover(this, re);
42106 		}
42107 		finally {
42108 			exitRule();
42109 		}
42110 		return _localctx;
42111 	}
42112 
42113 	public static class GrantContext extends ParserRuleContext {
42114 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42115 		public GrantClassPrivilegesClauseContext grantClassPrivilegesClause() {
42116 			return getRuleContext(GrantClassPrivilegesClauseContext.class,0);
42117 		}
42118 		public GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() {
42119 			return getRuleContext(GrantClassTypePrivilegesClauseContext.class,0);
42120 		}
42121 		public GrantContext(ParserRuleContext parent, int invokingState) {
42122 			super(parent, invokingState);
42123 		}
42124 		@Override public int getRuleIndex() { return RULE_grant; }
42125 		@Override
42126 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42127 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrant(this);
42128 			else return visitor.visitChildren(this);
42129 		}
42130 	}
42131 
42132 	public final GrantContext grant() throws RecognitionException {
42133 		GrantContext _localctx = new GrantContext(_ctx, getState());
42134 		enterRule(_localctx, 814, RULE_grant);
42135 		try {
42136 			enterOuterAlt(_localctx, 1);
42137 			{
42138 			setState(5818);
42139 			match(GRANT);
42140 			setState(5821);
42141 			_errHandler.sync(this);
42142 			switch ( getInterpreter().adaptivePredict(_input,677,_ctx) ) {
42143 			case 1:
42144 				{
42145 				setState(5819);
42146 				grantClassPrivilegesClause();
42147 				}
42148 				break;
42149 			case 2:
42150 				{
42151 				setState(5820);
42152 				grantClassTypePrivilegesClause();
42153 				}
42154 				break;
42155 			}
42156 			}
42157 		}
42158 		catch (RecognitionException re) {
42159 			_localctx.exception = re;
42160 			_errHandler.reportError(this, re);
42161 			_errHandler.recover(this, re);
42162 		}
42163 		finally {
42164 			exitRule();
42165 		}
42166 		return _localctx;
42167 	}
42168 
42169 	public static class GrantClassPrivilegesClauseContext extends ParserRuleContext {
42170 		public ClassPrivilegesContext classPrivileges() {
42171 			return getRuleContext(ClassPrivilegesContext.class,0);
42172 		}
42173 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42174 		public List<PrincipalContext> principal() {
42175 			return getRuleContexts(PrincipalContext.class);
42176 		}
42177 		public PrincipalContext principal(int i) {
42178 			return getRuleContext(PrincipalContext.class,i);
42179 		}
42180 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42181 		public OnClassClauseContext onClassClause() {
42182 			return getRuleContext(OnClassClauseContext.class,0);
42183 		}
42184 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42185 		public TerminalNode COMMA_(int i) {
42186 			return getToken(SQLServerStatementParser.COMMA_, i);
42187 		}
42188 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
42189 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42190 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
42191 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
42192 		public GrantClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42193 			super(parent, invokingState);
42194 		}
42195 		@Override public int getRuleIndex() { return RULE_grantClassPrivilegesClause; }
42196 		@Override
42197 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42198 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassPrivilegesClause(this);
42199 			else return visitor.visitChildren(this);
42200 		}
42201 	}
42202 
42203 	public final GrantClassPrivilegesClauseContext grantClassPrivilegesClause() throws RecognitionException {
42204 		GrantClassPrivilegesClauseContext _localctx = new GrantClassPrivilegesClauseContext(_ctx, getState());
42205 		enterRule(_localctx, 816, RULE_grantClassPrivilegesClause);
42206 		int _la;
42207 		try {
42208 			enterOuterAlt(_localctx, 1);
42209 			{
42210 			setState(5823);
42211 			classPrivileges();
42212 			setState(5826);
42213 			_errHandler.sync(this);
42214 			_la = _input.LA(1);
42215 			if (_la==ON) {
42216 				{
42217 				setState(5824);
42218 				match(ON);
42219 				setState(5825);
42220 				onClassClause();
42221 				}
42222 			}
42223 
42224 			setState(5828);
42225 			match(TO);
42226 			setState(5829);
42227 			principal();
42228 			setState(5834);
42229 			_errHandler.sync(this);
42230 			_la = _input.LA(1);
42231 			while (_la==COMMA_) {
42232 				{
42233 				{
42234 				setState(5830);
42235 				match(COMMA_);
42236 				setState(5831);
42237 				principal();
42238 				}
42239 				}
42240 				setState(5836);
42241 				_errHandler.sync(this);
42242 				_la = _input.LA(1);
42243 			}
42244 			setState(5840);
42245 			_errHandler.sync(this);
42246 			_la = _input.LA(1);
42247 			if (_la==WITH) {
42248 				{
42249 				setState(5837);
42250 				match(WITH);
42251 				setState(5838);
42252 				match(GRANT);
42253 				setState(5839);
42254 				match(OPTION);
42255 				}
42256 			}
42257 
42258 			setState(5844);
42259 			_errHandler.sync(this);
42260 			_la = _input.LA(1);
42261 			if (_la==AS) {
42262 				{
42263 				setState(5842);
42264 				match(AS);
42265 				setState(5843);
42266 				principal();
42267 				}
42268 			}
42269 
42270 			}
42271 		}
42272 		catch (RecognitionException re) {
42273 			_localctx.exception = re;
42274 			_errHandler.reportError(this, re);
42275 			_errHandler.recover(this, re);
42276 		}
42277 		finally {
42278 			exitRule();
42279 		}
42280 		return _localctx;
42281 	}
42282 
42283 	public static class GrantClassTypePrivilegesClauseContext extends ParserRuleContext {
42284 		public ClassTypePrivilegesContext classTypePrivileges() {
42285 			return getRuleContext(ClassTypePrivilegesContext.class,0);
42286 		}
42287 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42288 		public List<PrincipalContext> principal() {
42289 			return getRuleContexts(PrincipalContext.class);
42290 		}
42291 		public PrincipalContext principal(int i) {
42292 			return getRuleContext(PrincipalContext.class,i);
42293 		}
42294 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42295 		public OnClassTypeClauseContext onClassTypeClause() {
42296 			return getRuleContext(OnClassTypeClauseContext.class,0);
42297 		}
42298 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42299 		public TerminalNode COMMA_(int i) {
42300 			return getToken(SQLServerStatementParser.COMMA_, i);
42301 		}
42302 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
42303 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42304 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
42305 		public GrantClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42306 			super(parent, invokingState);
42307 		}
42308 		@Override public int getRuleIndex() { return RULE_grantClassTypePrivilegesClause; }
42309 		@Override
42310 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42311 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassTypePrivilegesClause(this);
42312 			else return visitor.visitChildren(this);
42313 		}
42314 	}
42315 
42316 	public final GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() throws RecognitionException {
42317 		GrantClassTypePrivilegesClauseContext _localctx = new GrantClassTypePrivilegesClauseContext(_ctx, getState());
42318 		enterRule(_localctx, 818, RULE_grantClassTypePrivilegesClause);
42319 		int _la;
42320 		try {
42321 			enterOuterAlt(_localctx, 1);
42322 			{
42323 			setState(5846);
42324 			classTypePrivileges();
42325 			setState(5849);
42326 			_errHandler.sync(this);
42327 			_la = _input.LA(1);
42328 			if (_la==ON) {
42329 				{
42330 				setState(5847);
42331 				match(ON);
42332 				setState(5848);
42333 				onClassTypeClause();
42334 				}
42335 			}
42336 
42337 			setState(5851);
42338 			match(TO);
42339 			setState(5852);
42340 			principal();
42341 			setState(5857);
42342 			_errHandler.sync(this);
42343 			_la = _input.LA(1);
42344 			while (_la==COMMA_) {
42345 				{
42346 				{
42347 				setState(5853);
42348 				match(COMMA_);
42349 				setState(5854);
42350 				principal();
42351 				}
42352 				}
42353 				setState(5859);
42354 				_errHandler.sync(this);
42355 				_la = _input.LA(1);
42356 			}
42357 			setState(5863);
42358 			_errHandler.sync(this);
42359 			_la = _input.LA(1);
42360 			if (_la==WITH) {
42361 				{
42362 				setState(5860);
42363 				match(WITH);
42364 				setState(5861);
42365 				match(GRANT);
42366 				setState(5862);
42367 				match(OPTION);
42368 				}
42369 			}
42370 
42371 			}
42372 		}
42373 		catch (RecognitionException re) {
42374 			_localctx.exception = re;
42375 			_errHandler.reportError(this, re);
42376 			_errHandler.recover(this, re);
42377 		}
42378 		finally {
42379 			exitRule();
42380 		}
42381 		return _localctx;
42382 	}
42383 
42384 	public static class ClassPrivilegesContext extends ParserRuleContext {
42385 		public List<PrivilegeTypeContext> privilegeType() {
42386 			return getRuleContexts(PrivilegeTypeContext.class);
42387 		}
42388 		public PrivilegeTypeContext privilegeType(int i) {
42389 			return getRuleContext(PrivilegeTypeContext.class,i);
42390 		}
42391 		public List<ColumnNamesContext> columnNames() {
42392 			return getRuleContexts(ColumnNamesContext.class);
42393 		}
42394 		public ColumnNamesContext columnNames(int i) {
42395 			return getRuleContext(ColumnNamesContext.class,i);
42396 		}
42397 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42398 		public TerminalNode COMMA_(int i) {
42399 			return getToken(SQLServerStatementParser.COMMA_, i);
42400 		}
42401 		public ClassPrivilegesContext(ParserRuleContext parent, int invokingState) {
42402 			super(parent, invokingState);
42403 		}
42404 		@Override public int getRuleIndex() { return RULE_classPrivileges; }
42405 		@Override
42406 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42407 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassPrivileges(this);
42408 			else return visitor.visitChildren(this);
42409 		}
42410 	}
42411 
42412 	public final ClassPrivilegesContext classPrivileges() throws RecognitionException {
42413 		ClassPrivilegesContext _localctx = new ClassPrivilegesContext(_ctx, getState());
42414 		enterRule(_localctx, 820, RULE_classPrivileges);
42415 		int _la;
42416 		try {
42417 			enterOuterAlt(_localctx, 1);
42418 			{
42419 			setState(5865);
42420 			privilegeType();
42421 			setState(5867);
42422 			_errHandler.sync(this);
42423 			_la = _input.LA(1);
42424 			if (_la==LP_) {
42425 				{
42426 				setState(5866);
42427 				columnNames();
42428 				}
42429 			}
42430 
42431 			setState(5876);
42432 			_errHandler.sync(this);
42433 			_la = _input.LA(1);
42434 			while (_la==COMMA_) {
42435 				{
42436 				{
42437 				setState(5869);
42438 				match(COMMA_);
42439 				setState(5870);
42440 				privilegeType();
42441 				setState(5872);
42442 				_errHandler.sync(this);
42443 				_la = _input.LA(1);
42444 				if (_la==LP_) {
42445 					{
42446 					setState(5871);
42447 					columnNames();
42448 					}
42449 				}
42450 
42451 				}
42452 				}
42453 				setState(5878);
42454 				_errHandler.sync(this);
42455 				_la = _input.LA(1);
42456 			}
42457 			}
42458 		}
42459 		catch (RecognitionException re) {
42460 			_localctx.exception = re;
42461 			_errHandler.reportError(this, re);
42462 			_errHandler.recover(this, re);
42463 		}
42464 		finally {
42465 			exitRule();
42466 		}
42467 		return _localctx;
42468 	}
42469 
42470 	public static class OnClassClauseContext extends ParserRuleContext {
42471 		public SecurableContext securable() {
42472 			return getRuleContext(SecurableContext.class,0);
42473 		}
42474 		public ClassItemContext classItem() {
42475 			return getRuleContext(ClassItemContext.class,0);
42476 		}
42477 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
42478 		public TerminalNode COLON_(int i) {
42479 			return getToken(SQLServerStatementParser.COLON_, i);
42480 		}
42481 		public OnClassClauseContext(ParserRuleContext parent, int invokingState) {
42482 			super(parent, invokingState);
42483 		}
42484 		@Override public int getRuleIndex() { return RULE_onClassClause; }
42485 		@Override
42486 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42487 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassClause(this);
42488 			else return visitor.visitChildren(this);
42489 		}
42490 	}
42491 
42492 	public final OnClassClauseContext onClassClause() throws RecognitionException {
42493 		OnClassClauseContext _localctx = new OnClassClauseContext(_ctx, getState());
42494 		enterRule(_localctx, 822, RULE_onClassClause);
42495 		try {
42496 			enterOuterAlt(_localctx, 1);
42497 			{
42498 			setState(5883);
42499 			_errHandler.sync(this);
42500 			switch ( getInterpreter().adaptivePredict(_input,688,_ctx) ) {
42501 			case 1:
42502 				{
42503 				setState(5879);
42504 				classItem();
42505 				setState(5880);
42506 				match(COLON_);
42507 				setState(5881);
42508 				match(COLON_);
42509 				}
42510 				break;
42511 			}
42512 			setState(5885);
42513 			securable();
42514 			}
42515 		}
42516 		catch (RecognitionException re) {
42517 			_localctx.exception = re;
42518 			_errHandler.reportError(this, re);
42519 			_errHandler.recover(this, re);
42520 		}
42521 		finally {
42522 			exitRule();
42523 		}
42524 		return _localctx;
42525 	}
42526 
42527 	public static class ClassTypePrivilegesContext extends ParserRuleContext {
42528 		public List<PrivilegeTypeContext> privilegeType() {
42529 			return getRuleContexts(PrivilegeTypeContext.class);
42530 		}
42531 		public PrivilegeTypeContext privilegeType(int i) {
42532 			return getRuleContext(PrivilegeTypeContext.class,i);
42533 		}
42534 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42535 		public TerminalNode COMMA_(int i) {
42536 			return getToken(SQLServerStatementParser.COMMA_, i);
42537 		}
42538 		public ClassTypePrivilegesContext(ParserRuleContext parent, int invokingState) {
42539 			super(parent, invokingState);
42540 		}
42541 		@Override public int getRuleIndex() { return RULE_classTypePrivileges; }
42542 		@Override
42543 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42544 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassTypePrivileges(this);
42545 			else return visitor.visitChildren(this);
42546 		}
42547 	}
42548 
42549 	public final ClassTypePrivilegesContext classTypePrivileges() throws RecognitionException {
42550 		ClassTypePrivilegesContext _localctx = new ClassTypePrivilegesContext(_ctx, getState());
42551 		enterRule(_localctx, 824, RULE_classTypePrivileges);
42552 		int _la;
42553 		try {
42554 			enterOuterAlt(_localctx, 1);
42555 			{
42556 			setState(5887);
42557 			privilegeType();
42558 			setState(5892);
42559 			_errHandler.sync(this);
42560 			_la = _input.LA(1);
42561 			while (_la==COMMA_) {
42562 				{
42563 				{
42564 				setState(5888);
42565 				match(COMMA_);
42566 				setState(5889);
42567 				privilegeType();
42568 				}
42569 				}
42570 				setState(5894);
42571 				_errHandler.sync(this);
42572 				_la = _input.LA(1);
42573 			}
42574 			}
42575 		}
42576 		catch (RecognitionException re) {
42577 			_localctx.exception = re;
42578 			_errHandler.reportError(this, re);
42579 			_errHandler.recover(this, re);
42580 		}
42581 		finally {
42582 			exitRule();
42583 		}
42584 		return _localctx;
42585 	}
42586 
42587 	public static class OnClassTypeClauseContext extends ParserRuleContext {
42588 		public SecurableContext securable() {
42589 			return getRuleContext(SecurableContext.class,0);
42590 		}
42591 		public ClassTypeContext classType() {
42592 			return getRuleContext(ClassTypeContext.class,0);
42593 		}
42594 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
42595 		public TerminalNode COLON_(int i) {
42596 			return getToken(SQLServerStatementParser.COLON_, i);
42597 		}
42598 		public OnClassTypeClauseContext(ParserRuleContext parent, int invokingState) {
42599 			super(parent, invokingState);
42600 		}
42601 		@Override public int getRuleIndex() { return RULE_onClassTypeClause; }
42602 		@Override
42603 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42604 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassTypeClause(this);
42605 			else return visitor.visitChildren(this);
42606 		}
42607 	}
42608 
42609 	public final OnClassTypeClauseContext onClassTypeClause() throws RecognitionException {
42610 		OnClassTypeClauseContext _localctx = new OnClassTypeClauseContext(_ctx, getState());
42611 		enterRule(_localctx, 826, RULE_onClassTypeClause);
42612 		try {
42613 			enterOuterAlt(_localctx, 1);
42614 			{
42615 			setState(5899);
42616 			_errHandler.sync(this);
42617 			switch ( getInterpreter().adaptivePredict(_input,690,_ctx) ) {
42618 			case 1:
42619 				{
42620 				setState(5895);
42621 				classType();
42622 				setState(5896);
42623 				match(COLON_);
42624 				setState(5897);
42625 				match(COLON_);
42626 				}
42627 				break;
42628 			}
42629 			setState(5901);
42630 			securable();
42631 			}
42632 		}
42633 		catch (RecognitionException re) {
42634 			_localctx.exception = re;
42635 			_errHandler.reportError(this, re);
42636 			_errHandler.recover(this, re);
42637 		}
42638 		finally {
42639 			exitRule();
42640 		}
42641 		return _localctx;
42642 	}
42643 
42644 	public static class SecurableContext extends ParserRuleContext {
42645 		public NameContext name() {
42646 			return getRuleContext(NameContext.class,0);
42647 		}
42648 		public OwnerContext owner() {
42649 			return getRuleContext(OwnerContext.class,0);
42650 		}
42651 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
42652 		public SecurableContext(ParserRuleContext parent, int invokingState) {
42653 			super(parent, invokingState);
42654 		}
42655 		@Override public int getRuleIndex() { return RULE_securable; }
42656 		@Override
42657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSecurable(this);
42659 			else return visitor.visitChildren(this);
42660 		}
42661 	}
42662 
42663 	public final SecurableContext securable() throws RecognitionException {
42664 		SecurableContext _localctx = new SecurableContext(_ctx, getState());
42665 		enterRule(_localctx, 828, RULE_securable);
42666 		try {
42667 			enterOuterAlt(_localctx, 1);
42668 			{
42669 			setState(5906);
42670 			_errHandler.sync(this);
42671 			switch ( getInterpreter().adaptivePredict(_input,691,_ctx) ) {
42672 			case 1:
42673 				{
42674 				setState(5903);
42675 				owner();
42676 				setState(5904);
42677 				match(DOT_);
42678 				}
42679 				break;
42680 			}
42681 			setState(5908);
42682 			name();
42683 			}
42684 		}
42685 		catch (RecognitionException re) {
42686 			_localctx.exception = re;
42687 			_errHandler.reportError(this, re);
42688 			_errHandler.recover(this, re);
42689 		}
42690 		finally {
42691 			exitRule();
42692 		}
42693 		return _localctx;
42694 	}
42695 
42696 	public static class PrincipalContext extends ParserRuleContext {
42697 		public UserNameContext userName() {
42698 			return getRuleContext(UserNameContext.class,0);
42699 		}
42700 		public PrincipalContext(ParserRuleContext parent, int invokingState) {
42701 			super(parent, invokingState);
42702 		}
42703 		@Override public int getRuleIndex() { return RULE_principal; }
42704 		@Override
42705 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42706 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrincipal(this);
42707 			else return visitor.visitChildren(this);
42708 		}
42709 	}
42710 
42711 	public final PrincipalContext principal() throws RecognitionException {
42712 		PrincipalContext _localctx = new PrincipalContext(_ctx, getState());
42713 		enterRule(_localctx, 830, RULE_principal);
42714 		try {
42715 			enterOuterAlt(_localctx, 1);
42716 			{
42717 			setState(5910);
42718 			userName();
42719 			}
42720 		}
42721 		catch (RecognitionException re) {
42722 			_localctx.exception = re;
42723 			_errHandler.reportError(this, re);
42724 			_errHandler.recover(this, re);
42725 		}
42726 		finally {
42727 			exitRule();
42728 		}
42729 		return _localctx;
42730 	}
42731 
42732 	public static class RevokeContext extends ParserRuleContext {
42733 		public TerminalNode REVOKE() { return getToken(SQLServerStatementParser.REVOKE, 0); }
42734 		public RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() {
42735 			return getRuleContext(RevokeClassPrivilegesClauseContext.class,0);
42736 		}
42737 		public RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() {
42738 			return getRuleContext(RevokeClassTypePrivilegesClauseContext.class,0);
42739 		}
42740 		public OptionForClauseContext optionForClause() {
42741 			return getRuleContext(OptionForClauseContext.class,0);
42742 		}
42743 		public RevokeContext(ParserRuleContext parent, int invokingState) {
42744 			super(parent, invokingState);
42745 		}
42746 		@Override public int getRuleIndex() { return RULE_revoke; }
42747 		@Override
42748 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42749 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevoke(this);
42750 			else return visitor.visitChildren(this);
42751 		}
42752 	}
42753 
42754 	public final RevokeContext revoke() throws RecognitionException {
42755 		RevokeContext _localctx = new RevokeContext(_ctx, getState());
42756 		enterRule(_localctx, 832, RULE_revoke);
42757 		int _la;
42758 		try {
42759 			enterOuterAlt(_localctx, 1);
42760 			{
42761 			setState(5912);
42762 			match(REVOKE);
42763 			setState(5918);
42764 			_errHandler.sync(this);
42765 			switch ( getInterpreter().adaptivePredict(_input,693,_ctx) ) {
42766 			case 1:
42767 				{
42768 				setState(5914);
42769 				_errHandler.sync(this);
42770 				_la = _input.LA(1);
42771 				if (_la==GRANT) {
42772 					{
42773 					setState(5913);
42774 					optionForClause();
42775 					}
42776 				}
42777 
42778 				setState(5916);
42779 				revokeClassPrivilegesClause();
42780 				}
42781 				break;
42782 			case 2:
42783 				{
42784 				setState(5917);
42785 				revokeClassTypePrivilegesClause();
42786 				}
42787 				break;
42788 			}
42789 			}
42790 		}
42791 		catch (RecognitionException re) {
42792 			_localctx.exception = re;
42793 			_errHandler.reportError(this, re);
42794 			_errHandler.recover(this, re);
42795 		}
42796 		finally {
42797 			exitRule();
42798 		}
42799 		return _localctx;
42800 	}
42801 
42802 	public static class RevokeClassPrivilegesClauseContext extends ParserRuleContext {
42803 		public ClassPrivilegesContext classPrivileges() {
42804 			return getRuleContext(ClassPrivilegesContext.class,0);
42805 		}
42806 		public List<PrincipalContext> principal() {
42807 			return getRuleContexts(PrincipalContext.class);
42808 		}
42809 		public PrincipalContext principal(int i) {
42810 			return getRuleContext(PrincipalContext.class,i);
42811 		}
42812 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42813 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
42814 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42815 		public OnClassClauseContext onClassClause() {
42816 			return getRuleContext(OnClassClauseContext.class,0);
42817 		}
42818 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42819 		public TerminalNode COMMA_(int i) {
42820 			return getToken(SQLServerStatementParser.COMMA_, i);
42821 		}
42822 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
42823 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
42824 		public RevokeClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42825 			super(parent, invokingState);
42826 		}
42827 		@Override public int getRuleIndex() { return RULE_revokeClassPrivilegesClause; }
42828 		@Override
42829 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42830 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassPrivilegesClause(this);
42831 			else return visitor.visitChildren(this);
42832 		}
42833 	}
42834 
42835 	public final RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() throws RecognitionException {
42836 		RevokeClassPrivilegesClauseContext _localctx = new RevokeClassPrivilegesClauseContext(_ctx, getState());
42837 		enterRule(_localctx, 834, RULE_revokeClassPrivilegesClause);
42838 		int _la;
42839 		try {
42840 			enterOuterAlt(_localctx, 1);
42841 			{
42842 			setState(5920);
42843 			classPrivileges();
42844 			setState(5923);
42845 			_errHandler.sync(this);
42846 			_la = _input.LA(1);
42847 			if (_la==ON) {
42848 				{
42849 				setState(5921);
42850 				match(ON);
42851 				setState(5922);
42852 				onClassClause();
42853 				}
42854 			}
42855 
42856 			setState(5925);
42857 			_la = _input.LA(1);
42858 			if ( !(_la==FROM || _la==TO) ) {
42859 			_errHandler.recoverInline(this);
42860 			}
42861 			else {
42862 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42863 				_errHandler.reportMatch(this);
42864 				consume();
42865 			}
42866 			setState(5926);
42867 			principal();
42868 			setState(5931);
42869 			_errHandler.sync(this);
42870 			_la = _input.LA(1);
42871 			while (_la==COMMA_) {
42872 				{
42873 				{
42874 				setState(5927);
42875 				match(COMMA_);
42876 				setState(5928);
42877 				principal();
42878 				}
42879 				}
42880 				setState(5933);
42881 				_errHandler.sync(this);
42882 				_la = _input.LA(1);
42883 			}
42884 			setState(5935);
42885 			_errHandler.sync(this);
42886 			_la = _input.LA(1);
42887 			if (_la==CASCADE) {
42888 				{
42889 				setState(5934);
42890 				match(CASCADE);
42891 				}
42892 			}
42893 
42894 			setState(5939);
42895 			_errHandler.sync(this);
42896 			_la = _input.LA(1);
42897 			if (_la==AS) {
42898 				{
42899 				setState(5937);
42900 				match(AS);
42901 				setState(5938);
42902 				principal();
42903 				}
42904 			}
42905 
42906 			}
42907 		}
42908 		catch (RecognitionException re) {
42909 			_localctx.exception = re;
42910 			_errHandler.reportError(this, re);
42911 			_errHandler.recover(this, re);
42912 		}
42913 		finally {
42914 			exitRule();
42915 		}
42916 		return _localctx;
42917 	}
42918 
42919 	public static class RevokeClassTypePrivilegesClauseContext extends ParserRuleContext {
42920 		public ClassTypePrivilegesContext classTypePrivileges() {
42921 			return getRuleContext(ClassTypePrivilegesContext.class,0);
42922 		}
42923 		public List<PrincipalContext> principal() {
42924 			return getRuleContexts(PrincipalContext.class);
42925 		}
42926 		public PrincipalContext principal(int i) {
42927 			return getRuleContext(PrincipalContext.class,i);
42928 		}
42929 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42930 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
42931 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42932 		public OnClassTypeClauseContext onClassTypeClause() {
42933 			return getRuleContext(OnClassTypeClauseContext.class,0);
42934 		}
42935 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42936 		public TerminalNode COMMA_(int i) {
42937 			return getToken(SQLServerStatementParser.COMMA_, i);
42938 		}
42939 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
42940 		public RevokeClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42941 			super(parent, invokingState);
42942 		}
42943 		@Override public int getRuleIndex() { return RULE_revokeClassTypePrivilegesClause; }
42944 		@Override
42945 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42946 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassTypePrivilegesClause(this);
42947 			else return visitor.visitChildren(this);
42948 		}
42949 	}
42950 
42951 	public final RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() throws RecognitionException {
42952 		RevokeClassTypePrivilegesClauseContext _localctx = new RevokeClassTypePrivilegesClauseContext(_ctx, getState());
42953 		enterRule(_localctx, 836, RULE_revokeClassTypePrivilegesClause);
42954 		int _la;
42955 		try {
42956 			enterOuterAlt(_localctx, 1);
42957 			{
42958 			setState(5941);
42959 			classTypePrivileges();
42960 			setState(5944);
42961 			_errHandler.sync(this);
42962 			_la = _input.LA(1);
42963 			if (_la==ON) {
42964 				{
42965 				setState(5942);
42966 				match(ON);
42967 				setState(5943);
42968 				onClassTypeClause();
42969 				}
42970 			}
42971 
42972 			setState(5946);
42973 			_la = _input.LA(1);
42974 			if ( !(_la==FROM || _la==TO) ) {
42975 			_errHandler.recoverInline(this);
42976 			}
42977 			else {
42978 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42979 				_errHandler.reportMatch(this);
42980 				consume();
42981 			}
42982 			setState(5947);
42983 			principal();
42984 			setState(5952);
42985 			_errHandler.sync(this);
42986 			_la = _input.LA(1);
42987 			while (_la==COMMA_) {
42988 				{
42989 				{
42990 				setState(5948);
42991 				match(COMMA_);
42992 				setState(5949);
42993 				principal();
42994 				}
42995 				}
42996 				setState(5954);
42997 				_errHandler.sync(this);
42998 				_la = _input.LA(1);
42999 			}
43000 			setState(5956);
43001 			_errHandler.sync(this);
43002 			_la = _input.LA(1);
43003 			if (_la==CASCADE) {
43004 				{
43005 				setState(5955);
43006 				match(CASCADE);
43007 				}
43008 			}
43009 
43010 			}
43011 		}
43012 		catch (RecognitionException re) {
43013 			_localctx.exception = re;
43014 			_errHandler.reportError(this, re);
43015 			_errHandler.recover(this, re);
43016 		}
43017 		finally {
43018 			exitRule();
43019 		}
43020 		return _localctx;
43021 	}
43022 
43023 	public static class DenyContext extends ParserRuleContext {
43024 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
43025 		public DenyClassPrivilegesClauseContext denyClassPrivilegesClause() {
43026 			return getRuleContext(DenyClassPrivilegesClauseContext.class,0);
43027 		}
43028 		public DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() {
43029 			return getRuleContext(DenyClassTypePrivilegesClauseContext.class,0);
43030 		}
43031 		public DenyContext(ParserRuleContext parent, int invokingState) {
43032 			super(parent, invokingState);
43033 		}
43034 		@Override public int getRuleIndex() { return RULE_deny; }
43035 		@Override
43036 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43037 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeny(this);
43038 			else return visitor.visitChildren(this);
43039 		}
43040 	}
43041 
43042 	public final DenyContext deny() throws RecognitionException {
43043 		DenyContext _localctx = new DenyContext(_ctx, getState());
43044 		enterRule(_localctx, 838, RULE_deny);
43045 		try {
43046 			enterOuterAlt(_localctx, 1);
43047 			{
43048 			setState(5958);
43049 			match(DENY);
43050 			setState(5961);
43051 			_errHandler.sync(this);
43052 			switch ( getInterpreter().adaptivePredict(_input,701,_ctx) ) {
43053 			case 1:
43054 				{
43055 				setState(5959);
43056 				denyClassPrivilegesClause();
43057 				}
43058 				break;
43059 			case 2:
43060 				{
43061 				setState(5960);
43062 				denyClassTypePrivilegesClause();
43063 				}
43064 				break;
43065 			}
43066 			}
43067 		}
43068 		catch (RecognitionException re) {
43069 			_localctx.exception = re;
43070 			_errHandler.reportError(this, re);
43071 			_errHandler.recover(this, re);
43072 		}
43073 		finally {
43074 			exitRule();
43075 		}
43076 		return _localctx;
43077 	}
43078 
43079 	public static class DenyClassPrivilegesClauseContext extends ParserRuleContext {
43080 		public ClassPrivilegesContext classPrivileges() {
43081 			return getRuleContext(ClassPrivilegesContext.class,0);
43082 		}
43083 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
43084 		public List<PrincipalContext> principal() {
43085 			return getRuleContexts(PrincipalContext.class);
43086 		}
43087 		public PrincipalContext principal(int i) {
43088 			return getRuleContext(PrincipalContext.class,i);
43089 		}
43090 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
43091 		public OnClassClauseContext onClassClause() {
43092 			return getRuleContext(OnClassClauseContext.class,0);
43093 		}
43094 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
43095 		public TerminalNode COMMA_(int i) {
43096 			return getToken(SQLServerStatementParser.COMMA_, i);
43097 		}
43098 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
43099 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
43100 		public DenyClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
43101 			super(parent, invokingState);
43102 		}
43103 		@Override public int getRuleIndex() { return RULE_denyClassPrivilegesClause; }
43104 		@Override
43105 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43106 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassPrivilegesClause(this);
43107 			else return visitor.visitChildren(this);
43108 		}
43109 	}
43110 
43111 	public final DenyClassPrivilegesClauseContext denyClassPrivilegesClause() throws RecognitionException {
43112 		DenyClassPrivilegesClauseContext _localctx = new DenyClassPrivilegesClauseContext(_ctx, getState());
43113 		enterRule(_localctx, 840, RULE_denyClassPrivilegesClause);
43114 		int _la;
43115 		try {
43116 			enterOuterAlt(_localctx, 1);
43117 			{
43118 			setState(5963);
43119 			classPrivileges();
43120 			setState(5966);
43121 			_errHandler.sync(this);
43122 			_la = _input.LA(1);
43123 			if (_la==ON) {
43124 				{
43125 				setState(5964);
43126 				match(ON);
43127 				setState(5965);
43128 				onClassClause();
43129 				}
43130 			}
43131 
43132 			setState(5968);
43133 			match(TO);
43134 			setState(5969);
43135 			principal();
43136 			setState(5974);
43137 			_errHandler.sync(this);
43138 			_la = _input.LA(1);
43139 			while (_la==COMMA_) {
43140 				{
43141 				{
43142 				setState(5970);
43143 				match(COMMA_);
43144 				setState(5971);
43145 				principal();
43146 				}
43147 				}
43148 				setState(5976);
43149 				_errHandler.sync(this);
43150 				_la = _input.LA(1);
43151 			}
43152 			setState(5978);
43153 			_errHandler.sync(this);
43154 			_la = _input.LA(1);
43155 			if (_la==CASCADE) {
43156 				{
43157 				setState(5977);
43158 				match(CASCADE);
43159 				}
43160 			}
43161 
43162 			setState(5982);
43163 			_errHandler.sync(this);
43164 			_la = _input.LA(1);
43165 			if (_la==AS) {
43166 				{
43167 				setState(5980);
43168 				match(AS);
43169 				setState(5981);
43170 				principal();
43171 				}
43172 			}
43173 
43174 			}
43175 		}
43176 		catch (RecognitionException re) {
43177 			_localctx.exception = re;
43178 			_errHandler.reportError(this, re);
43179 			_errHandler.recover(this, re);
43180 		}
43181 		finally {
43182 			exitRule();
43183 		}
43184 		return _localctx;
43185 	}
43186 
43187 	public static class DenyClassTypePrivilegesClauseContext extends ParserRuleContext {
43188 		public ClassTypePrivilegesContext classTypePrivileges() {
43189 			return getRuleContext(ClassTypePrivilegesContext.class,0);
43190 		}
43191 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
43192 		public List<PrincipalContext> principal() {
43193 			return getRuleContexts(PrincipalContext.class);
43194 		}
43195 		public PrincipalContext principal(int i) {
43196 			return getRuleContext(PrincipalContext.class,i);
43197 		}
43198 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
43199 		public OnClassTypeClauseContext onClassTypeClause() {
43200 			return getRuleContext(OnClassTypeClauseContext.class,0);
43201 		}
43202 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
43203 		public TerminalNode COMMA_(int i) {
43204 			return getToken(SQLServerStatementParser.COMMA_, i);
43205 		}
43206 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
43207 		public DenyClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
43208 			super(parent, invokingState);
43209 		}
43210 		@Override public int getRuleIndex() { return RULE_denyClassTypePrivilegesClause; }
43211 		@Override
43212 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43213 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassTypePrivilegesClause(this);
43214 			else return visitor.visitChildren(this);
43215 		}
43216 	}
43217 
43218 	public final DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() throws RecognitionException {
43219 		DenyClassTypePrivilegesClauseContext _localctx = new DenyClassTypePrivilegesClauseContext(_ctx, getState());
43220 		enterRule(_localctx, 842, RULE_denyClassTypePrivilegesClause);
43221 		int _la;
43222 		try {
43223 			enterOuterAlt(_localctx, 1);
43224 			{
43225 			setState(5984);
43226 			classTypePrivileges();
43227 			setState(5987);
43228 			_errHandler.sync(this);
43229 			_la = _input.LA(1);
43230 			if (_la==ON) {
43231 				{
43232 				setState(5985);
43233 				match(ON);
43234 				setState(5986);
43235 				onClassTypeClause();
43236 				}
43237 			}
43238 
43239 			setState(5989);
43240 			match(TO);
43241 			setState(5990);
43242 			principal();
43243 			setState(5995);
43244 			_errHandler.sync(this);
43245 			_la = _input.LA(1);
43246 			while (_la==COMMA_) {
43247 				{
43248 				{
43249 				setState(5991);
43250 				match(COMMA_);
43251 				setState(5992);
43252 				principal();
43253 				}
43254 				}
43255 				setState(5997);
43256 				_errHandler.sync(this);
43257 				_la = _input.LA(1);
43258 			}
43259 			setState(5999);
43260 			_errHandler.sync(this);
43261 			_la = _input.LA(1);
43262 			if (_la==CASCADE) {
43263 				{
43264 				setState(5998);
43265 				match(CASCADE);
43266 				}
43267 			}
43268 
43269 			}
43270 		}
43271 		catch (RecognitionException re) {
43272 			_localctx.exception = re;
43273 			_errHandler.reportError(this, re);
43274 			_errHandler.recover(this, re);
43275 		}
43276 		finally {
43277 			exitRule();
43278 		}
43279 		return _localctx;
43280 	}
43281 
43282 	public static class OptionForClauseContext extends ParserRuleContext {
43283 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
43284 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
43285 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
43286 		public OptionForClauseContext(ParserRuleContext parent, int invokingState) {
43287 			super(parent, invokingState);
43288 		}
43289 		@Override public int getRuleIndex() { return RULE_optionForClause; }
43290 		@Override
43291 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43292 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionForClause(this);
43293 			else return visitor.visitChildren(this);
43294 		}
43295 	}
43296 
43297 	public final OptionForClauseContext optionForClause() throws RecognitionException {
43298 		OptionForClauseContext _localctx = new OptionForClauseContext(_ctx, getState());
43299 		enterRule(_localctx, 844, RULE_optionForClause);
43300 		try {
43301 			enterOuterAlt(_localctx, 1);
43302 			{
43303 			setState(6001);
43304 			match(GRANT);
43305 			setState(6002);
43306 			match(OPTION);
43307 			setState(6003);
43308 			match(FOR);
43309 			}
43310 		}
43311 		catch (RecognitionException re) {
43312 			_localctx.exception = re;
43313 			_errHandler.reportError(this, re);
43314 			_errHandler.recover(this, re);
43315 		}
43316 		finally {
43317 			exitRule();
43318 		}
43319 		return _localctx;
43320 	}
43321 
43322 	public static class PrivilegeTypeContext extends ParserRuleContext {
43323 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
43324 		public TerminalNode PRIVILEGES() { return getToken(SQLServerStatementParser.PRIVILEGES, 0); }
43325 		public AssemblyPermissionContext assemblyPermission() {
43326 			return getRuleContext(AssemblyPermissionContext.class,0);
43327 		}
43328 		public AsymmetricKeyPermissionContext asymmetricKeyPermission() {
43329 			return getRuleContext(AsymmetricKeyPermissionContext.class,0);
43330 		}
43331 		public AvailabilityGroupPermissionContext availabilityGroupPermission() {
43332 			return getRuleContext(AvailabilityGroupPermissionContext.class,0);
43333 		}
43334 		public CertificatePermissionContext certificatePermission() {
43335 			return getRuleContext(CertificatePermissionContext.class,0);
43336 		}
43337 		public ObjectPermissionContext objectPermission() {
43338 			return getRuleContext(ObjectPermissionContext.class,0);
43339 		}
43340 		public SystemObjectPermissionContext systemObjectPermission() {
43341 			return getRuleContext(SystemObjectPermissionContext.class,0);
43342 		}
43343 		public DatabasePermissionContext databasePermission() {
43344 			return getRuleContext(DatabasePermissionContext.class,0);
43345 		}
43346 		public DatabasePrincipalPermissionContext databasePrincipalPermission() {
43347 			return getRuleContext(DatabasePrincipalPermissionContext.class,0);
43348 		}
43349 		public DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() {
43350 			return getRuleContext(DatabaseScopedCredentialPermissionContext.class,0);
43351 		}
43352 		public EndpointPermissionContext endpointPermission() {
43353 			return getRuleContext(EndpointPermissionContext.class,0);
43354 		}
43355 		public FullTextPermissionContext fullTextPermission() {
43356 			return getRuleContext(FullTextPermissionContext.class,0);
43357 		}
43358 		public SchemaPermissionContext schemaPermission() {
43359 			return getRuleContext(SchemaPermissionContext.class,0);
43360 		}
43361 		public SearchPropertyListPermissionContext searchPropertyListPermission() {
43362 			return getRuleContext(SearchPropertyListPermissionContext.class,0);
43363 		}
43364 		public ServerPermissionContext serverPermission() {
43365 			return getRuleContext(ServerPermissionContext.class,0);
43366 		}
43367 		public ServerPrincipalPermissionContext serverPrincipalPermission() {
43368 			return getRuleContext(ServerPrincipalPermissionContext.class,0);
43369 		}
43370 		public ServiceBrokerPermissionContext serviceBrokerPermission() {
43371 			return getRuleContext(ServiceBrokerPermissionContext.class,0);
43372 		}
43373 		public SymmetricKeyPermissionContext symmetricKeyPermission() {
43374 			return getRuleContext(SymmetricKeyPermissionContext.class,0);
43375 		}
43376 		public TypePermissionContext typePermission() {
43377 			return getRuleContext(TypePermissionContext.class,0);
43378 		}
43379 		public XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() {
43380 			return getRuleContext(XmlSchemaCollectionPermissionContext.class,0);
43381 		}
43382 		public PrivilegeTypeContext(ParserRuleContext parent, int invokingState) {
43383 			super(parent, invokingState);
43384 		}
43385 		@Override public int getRuleIndex() { return RULE_privilegeType; }
43386 		@Override
43387 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43388 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivilegeType(this);
43389 			else return visitor.visitChildren(this);
43390 		}
43391 	}
43392 
43393 	public final PrivilegeTypeContext privilegeType() throws RecognitionException {
43394 		PrivilegeTypeContext _localctx = new PrivilegeTypeContext(_ctx, getState());
43395 		enterRule(_localctx, 846, RULE_privilegeType);
43396 		int _la;
43397 		try {
43398 			setState(6028);
43399 			_errHandler.sync(this);
43400 			switch ( getInterpreter().adaptivePredict(_input,710,_ctx) ) {
43401 			case 1:
43402 				enterOuterAlt(_localctx, 1);
43403 				{
43404 				setState(6005);
43405 				match(ALL);
43406 				setState(6007);
43407 				_errHandler.sync(this);
43408 				_la = _input.LA(1);
43409 				if (_la==PRIVILEGES) {
43410 					{
43411 					setState(6006);
43412 					match(PRIVILEGES);
43413 					}
43414 				}
43415 
43416 				}
43417 				break;
43418 			case 2:
43419 				enterOuterAlt(_localctx, 2);
43420 				{
43421 				setState(6009);
43422 				assemblyPermission();
43423 				}
43424 				break;
43425 			case 3:
43426 				enterOuterAlt(_localctx, 3);
43427 				{
43428 				setState(6010);
43429 				asymmetricKeyPermission();
43430 				}
43431 				break;
43432 			case 4:
43433 				enterOuterAlt(_localctx, 4);
43434 				{
43435 				setState(6011);
43436 				availabilityGroupPermission();
43437 				}
43438 				break;
43439 			case 5:
43440 				enterOuterAlt(_localctx, 5);
43441 				{
43442 				setState(6012);
43443 				certificatePermission();
43444 				}
43445 				break;
43446 			case 6:
43447 				enterOuterAlt(_localctx, 6);
43448 				{
43449 				setState(6013);
43450 				objectPermission();
43451 				}
43452 				break;
43453 			case 7:
43454 				enterOuterAlt(_localctx, 7);
43455 				{
43456 				setState(6014);
43457 				systemObjectPermission();
43458 				}
43459 				break;
43460 			case 8:
43461 				enterOuterAlt(_localctx, 8);
43462 				{
43463 				setState(6015);
43464 				databasePermission();
43465 				}
43466 				break;
43467 			case 9:
43468 				enterOuterAlt(_localctx, 9);
43469 				{
43470 				setState(6016);
43471 				databasePrincipalPermission();
43472 				}
43473 				break;
43474 			case 10:
43475 				enterOuterAlt(_localctx, 10);
43476 				{
43477 				setState(6017);
43478 				databaseScopedCredentialPermission();
43479 				}
43480 				break;
43481 			case 11:
43482 				enterOuterAlt(_localctx, 11);
43483 				{
43484 				setState(6018);
43485 				endpointPermission();
43486 				}
43487 				break;
43488 			case 12:
43489 				enterOuterAlt(_localctx, 12);
43490 				{
43491 				setState(6019);
43492 				fullTextPermission();
43493 				}
43494 				break;
43495 			case 13:
43496 				enterOuterAlt(_localctx, 13);
43497 				{
43498 				setState(6020);
43499 				schemaPermission();
43500 				}
43501 				break;
43502 			case 14:
43503 				enterOuterAlt(_localctx, 14);
43504 				{
43505 				setState(6021);
43506 				searchPropertyListPermission();
43507 				}
43508 				break;
43509 			case 15:
43510 				enterOuterAlt(_localctx, 15);
43511 				{
43512 				setState(6022);
43513 				serverPermission();
43514 				}
43515 				break;
43516 			case 16:
43517 				enterOuterAlt(_localctx, 16);
43518 				{
43519 				setState(6023);
43520 				serverPrincipalPermission();
43521 				}
43522 				break;
43523 			case 17:
43524 				enterOuterAlt(_localctx, 17);
43525 				{
43526 				setState(6024);
43527 				serviceBrokerPermission();
43528 				}
43529 				break;
43530 			case 18:
43531 				enterOuterAlt(_localctx, 18);
43532 				{
43533 				setState(6025);
43534 				symmetricKeyPermission();
43535 				}
43536 				break;
43537 			case 19:
43538 				enterOuterAlt(_localctx, 19);
43539 				{
43540 				setState(6026);
43541 				typePermission();
43542 				}
43543 				break;
43544 			case 20:
43545 				enterOuterAlt(_localctx, 20);
43546 				{
43547 				setState(6027);
43548 				xmlSchemaCollectionPermission();
43549 				}
43550 				break;
43551 			}
43552 		}
43553 		catch (RecognitionException re) {
43554 			_localctx.exception = re;
43555 			_errHandler.reportError(this, re);
43556 			_errHandler.recover(this, re);
43557 		}
43558 		finally {
43559 			exitRule();
43560 		}
43561 		return _localctx;
43562 	}
43563 
43564 	public static class ObjectPermissionContext extends ParserRuleContext {
43565 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43566 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43567 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
43568 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
43569 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
43570 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
43571 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43572 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43573 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43574 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43575 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
43576 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43577 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
43578 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
43579 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43580 		public ObjectPermissionContext(ParserRuleContext parent, int invokingState) {
43581 			super(parent, invokingState);
43582 		}
43583 		@Override public int getRuleIndex() { return RULE_objectPermission; }
43584 		@Override
43585 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43586 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitObjectPermission(this);
43587 			else return visitor.visitChildren(this);
43588 		}
43589 	}
43590 
43591 	public final ObjectPermissionContext objectPermission() throws RecognitionException {
43592 		ObjectPermissionContext _localctx = new ObjectPermissionContext(_ctx, getState());
43593 		enterRule(_localctx, 848, RULE_objectPermission);
43594 		try {
43595 			setState(6046);
43596 			_errHandler.sync(this);
43597 			switch ( getInterpreter().adaptivePredict(_input,711,_ctx) ) {
43598 			case 1:
43599 				enterOuterAlt(_localctx, 1);
43600 				{
43601 				setState(6030);
43602 				match(ALTER);
43603 				}
43604 				break;
43605 			case 2:
43606 				enterOuterAlt(_localctx, 2);
43607 				{
43608 				setState(6031);
43609 				match(CONTROL);
43610 				}
43611 				break;
43612 			case 3:
43613 				enterOuterAlt(_localctx, 3);
43614 				{
43615 				setState(6032);
43616 				match(DELETE);
43617 				}
43618 				break;
43619 			case 4:
43620 				enterOuterAlt(_localctx, 4);
43621 				{
43622 				setState(6033);
43623 				match(EXECUTE);
43624 				}
43625 				break;
43626 			case 5:
43627 				enterOuterAlt(_localctx, 5);
43628 				{
43629 				setState(6034);
43630 				match(INSERT);
43631 				}
43632 				break;
43633 			case 6:
43634 				enterOuterAlt(_localctx, 6);
43635 				{
43636 				setState(6035);
43637 				match(RECEIVE);
43638 				}
43639 				break;
43640 			case 7:
43641 				enterOuterAlt(_localctx, 7);
43642 				{
43643 				setState(6036);
43644 				match(REFERENCES);
43645 				}
43646 				break;
43647 			case 8:
43648 				enterOuterAlt(_localctx, 8);
43649 				{
43650 				setState(6037);
43651 				match(SELECT);
43652 				}
43653 				break;
43654 			case 9:
43655 				enterOuterAlt(_localctx, 9);
43656 				{
43657 				setState(6038);
43658 				match(TAKE);
43659 				setState(6039);
43660 				match(OWNERSHIP);
43661 				}
43662 				break;
43663 			case 10:
43664 				enterOuterAlt(_localctx, 10);
43665 				{
43666 				setState(6040);
43667 				match(UPDATE);
43668 				}
43669 				break;
43670 			case 11:
43671 				enterOuterAlt(_localctx, 11);
43672 				{
43673 				setState(6041);
43674 				match(VIEW);
43675 				setState(6042);
43676 				match(CHANGE);
43677 				setState(6043);
43678 				match(TRACKING);
43679 				}
43680 				break;
43681 			case 12:
43682 				enterOuterAlt(_localctx, 12);
43683 				{
43684 				setState(6044);
43685 				match(VIEW);
43686 				setState(6045);
43687 				match(DEFINITION);
43688 				}
43689 				break;
43690 			}
43691 		}
43692 		catch (RecognitionException re) {
43693 			_localctx.exception = re;
43694 			_errHandler.reportError(this, re);
43695 			_errHandler.recover(this, re);
43696 		}
43697 		finally {
43698 			exitRule();
43699 		}
43700 		return _localctx;
43701 	}
43702 
43703 	public static class ServerPermissionContext extends ParserRuleContext {
43704 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
43705 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
43706 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
43707 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43708 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
43709 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
43710 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
43711 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
43712 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
43713 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43714 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
43715 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
43716 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
43717 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
43718 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
43719 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
43720 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
43721 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
43722 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
43723 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
43724 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
43725 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
43726 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43727 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
43728 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
43729 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
43730 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43731 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
43732 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
43733 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
43734 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
43735 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
43736 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
43737 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43738 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
43739 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
43740 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
43741 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
43742 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
43743 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43744 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43745 		public ServerPermissionContext(ParserRuleContext parent, int invokingState) {
43746 			super(parent, invokingState);
43747 		}
43748 		@Override public int getRuleIndex() { return RULE_serverPermission; }
43749 		@Override
43750 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43751 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPermission(this);
43752 			else return visitor.visitChildren(this);
43753 		}
43754 	}
43755 
43756 	public final ServerPermissionContext serverPermission() throws RecognitionException {
43757 		ServerPermissionContext _localctx = new ServerPermissionContext(_ctx, getState());
43758 		enterRule(_localctx, 850, RULE_serverPermission);
43759 		int _la;
43760 		try {
43761 			setState(6125);
43762 			_errHandler.sync(this);
43763 			switch ( getInterpreter().adaptivePredict(_input,715,_ctx) ) {
43764 			case 1:
43765 				enterOuterAlt(_localctx, 1);
43766 				{
43767 				setState(6048);
43768 				match(ADMINISTER);
43769 				setState(6049);
43770 				match(BULK);
43771 				setState(6050);
43772 				match(OPERATIONS);
43773 				}
43774 				break;
43775 			case 2:
43776 				enterOuterAlt(_localctx, 2);
43777 				{
43778 				setState(6051);
43779 				match(ALTER);
43780 				setState(6057);
43781 				_errHandler.sync(this);
43782 				switch (_input.LA(1)) {
43783 				case RESOURCES:
43784 					{
43785 					setState(6052);
43786 					match(RESOURCES);
43787 					}
43788 					break;
43789 				case SETTINGS:
43790 					{
43791 					setState(6053);
43792 					match(SETTINGS);
43793 					}
43794 					break;
43795 				case TRACE:
43796 					{
43797 					setState(6054);
43798 					match(TRACE);
43799 					}
43800 					break;
43801 				case SERVER:
43802 					{
43803 					setState(6055);
43804 					match(SERVER);
43805 					setState(6056);
43806 					match(STATE);
43807 					}
43808 					break;
43809 				default:
43810 					throw new NoViableAltException(this);
43811 				}
43812 				}
43813 				break;
43814 			case 3:
43815 				enterOuterAlt(_localctx, 3);
43816 				{
43817 				setState(6059);
43818 				match(ALTER);
43819 				setState(6060);
43820 				match(ANY);
43821 				setState(6078);
43822 				_errHandler.sync(this);
43823 				switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) {
43824 				case 1:
43825 					{
43826 					setState(6061);
43827 					match(AVAILABILITY);
43828 					setState(6062);
43829 					match(GROUP);
43830 					}
43831 					break;
43832 				case 2:
43833 					{
43834 					setState(6063);
43835 					match(CONNECTION);
43836 					}
43837 					break;
43838 				case 3:
43839 					{
43840 					setState(6064);
43841 					match(CREDENTIAL);
43842 					}
43843 					break;
43844 				case 4:
43845 					{
43846 					setState(6065);
43847 					match(DATABASE);
43848 					}
43849 					break;
43850 				case 5:
43851 					{
43852 					setState(6066);
43853 					match(ENDPOINT);
43854 					}
43855 					break;
43856 				case 6:
43857 					{
43858 					setState(6067);
43859 					match(EVENT);
43860 					setState(6068);
43861 					match(NOTIFICATION);
43862 					}
43863 					break;
43864 				case 7:
43865 					{
43866 					setState(6069);
43867 					match(EVENT);
43868 					setState(6070);
43869 					match(SESSION);
43870 					}
43871 					break;
43872 				case 8:
43873 					{
43874 					setState(6071);
43875 					match(LINKED);
43876 					setState(6072);
43877 					match(SERVER);
43878 					}
43879 					break;
43880 				case 9:
43881 					{
43882 					setState(6073);
43883 					match(LOGIN);
43884 					}
43885 					break;
43886 				case 10:
43887 					{
43888 					setState(6074);
43889 					match(SERVER);
43890 					setState(6075);
43891 					match(AUDIT);
43892 					}
43893 					break;
43894 				case 11:
43895 					{
43896 					setState(6076);
43897 					match(SERVER);
43898 					setState(6077);
43899 					match(ROLE);
43900 					}
43901 					break;
43902 				}
43903 				}
43904 				break;
43905 			case 4:
43906 				enterOuterAlt(_localctx, 4);
43907 				{
43908 				setState(6080);
43909 				match(AUTHENTICATE);
43910 				setState(6081);
43911 				match(SERVER);
43912 				}
43913 				break;
43914 			case 5:
43915 				enterOuterAlt(_localctx, 5);
43916 				{
43917 				setState(6082);
43918 				match(CONNECT);
43919 				setState(6083);
43920 				match(ANY);
43921 				setState(6084);
43922 				match(DATABASE);
43923 				}
43924 				break;
43925 			case 6:
43926 				enterOuterAlt(_localctx, 6);
43927 				{
43928 				setState(6085);
43929 				match(CONNECT);
43930 				setState(6086);
43931 				match(SQL);
43932 				}
43933 				break;
43934 			case 7:
43935 				enterOuterAlt(_localctx, 7);
43936 				{
43937 				setState(6087);
43938 				match(CONTROL);
43939 				setState(6088);
43940 				match(SERVER);
43941 				}
43942 				break;
43943 			case 8:
43944 				enterOuterAlt(_localctx, 8);
43945 				{
43946 				setState(6089);
43947 				match(CREATE);
43948 				setState(6090);
43949 				match(ANY);
43950 				setState(6091);
43951 				match(DATABASE);
43952 				}
43953 				break;
43954 			case 9:
43955 				enterOuterAlt(_localctx, 9);
43956 				{
43957 				setState(6092);
43958 				match(CREATE);
43959 				setState(6104);
43960 				_errHandler.sync(this);
43961 				switch (_input.LA(1)) {
43962 				case AVAILABILITY:
43963 					{
43964 					setState(6093);
43965 					match(AVAILABILITY);
43966 					setState(6094);
43967 					match(GROUP);
43968 					}
43969 					break;
43970 				case DDL:
43971 					{
43972 					setState(6095);
43973 					match(DDL);
43974 					setState(6096);
43975 					match(EVENT);
43976 					setState(6097);
43977 					match(NOTIFICATION);
43978 					}
43979 					break;
43980 				case ENDPOINT:
43981 					{
43982 					setState(6098);
43983 					match(ENDPOINT);
43984 					}
43985 					break;
43986 				case SERVER:
43987 					{
43988 					setState(6099);
43989 					match(SERVER);
43990 					setState(6100);
43991 					match(ROLE);
43992 					}
43993 					break;
43994 				case TRACE:
43995 					{
43996 					setState(6101);
43997 					match(TRACE);
43998 					setState(6102);
43999 					match(EVENT);
44000 					setState(6103);
44001 					match(NOTIFICATION);
44002 					}
44003 					break;
44004 				default:
44005 					throw new NoViableAltException(this);
44006 				}
44007 				}
44008 				break;
44009 			case 10:
44010 				enterOuterAlt(_localctx, 10);
44011 				{
44012 				setState(6106);
44013 				match(EXTERNAL);
44014 				setState(6107);
44015 				match(ACCESS);
44016 				setState(6108);
44017 				match(ASSEMBLY);
44018 				}
44019 				break;
44020 			case 11:
44021 				enterOuterAlt(_localctx, 11);
44022 				{
44023 				setState(6109);
44024 				match(IMPERSONATE);
44025 				setState(6110);
44026 				match(ANY);
44027 				setState(6111);
44028 				match(LOGIN);
44029 				}
44030 				break;
44031 			case 12:
44032 				enterOuterAlt(_localctx, 12);
44033 				{
44034 				setState(6112);
44035 				match(SELECT);
44036 				setState(6113);
44037 				match(ALL);
44038 				setState(6114);
44039 				match(USER);
44040 				setState(6115);
44041 				match(SECURABLES);
44042 				}
44043 				break;
44044 			case 13:
44045 				enterOuterAlt(_localctx, 13);
44046 				{
44047 				setState(6116);
44048 				match(SHUTDOWN);
44049 				}
44050 				break;
44051 			case 14:
44052 				enterOuterAlt(_localctx, 14);
44053 				{
44054 				setState(6117);
44055 				match(UNSAFE);
44056 				setState(6118);
44057 				match(ASSEMBLY);
44058 				}
44059 				break;
44060 			case 15:
44061 				enterOuterAlt(_localctx, 15);
44062 				{
44063 				setState(6119);
44064 				match(VIEW);
44065 				setState(6120);
44066 				match(ANY);
44067 				setState(6121);
44068 				_la = _input.LA(1);
44069 				if ( !(_la==DATABASE || _la==DEFINITION) ) {
44070 				_errHandler.recoverInline(this);
44071 				}
44072 				else {
44073 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44074 					_errHandler.reportMatch(this);
44075 					consume();
44076 				}
44077 				}
44078 				break;
44079 			case 16:
44080 				enterOuterAlt(_localctx, 16);
44081 				{
44082 				setState(6122);
44083 				match(VIEW);
44084 				setState(6123);
44085 				match(SERVER);
44086 				setState(6124);
44087 				match(STATE);
44088 				}
44089 				break;
44090 			}
44091 		}
44092 		catch (RecognitionException re) {
44093 			_localctx.exception = re;
44094 			_errHandler.reportError(this, re);
44095 			_errHandler.recover(this, re);
44096 		}
44097 		finally {
44098 			exitRule();
44099 		}
44100 		return _localctx;
44101 	}
44102 
44103 	public static class ServerPrincipalPermissionContext extends ParserRuleContext {
44104 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44105 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44106 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
44107 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44108 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44109 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44110 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44111 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
44112 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
44113 		public ServerPrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
44114 			super(parent, invokingState);
44115 		}
44116 		@Override public int getRuleIndex() { return RULE_serverPrincipalPermission; }
44117 		@Override
44118 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44119 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPrincipalPermission(this);
44120 			else return visitor.visitChildren(this);
44121 		}
44122 	}
44123 
44124 	public final ServerPrincipalPermissionContext serverPrincipalPermission() throws RecognitionException {
44125 		ServerPrincipalPermissionContext _localctx = new ServerPrincipalPermissionContext(_ctx, getState());
44126 		enterRule(_localctx, 852, RULE_serverPrincipalPermission);
44127 		int _la;
44128 		try {
44129 			setState(6145);
44130 			_errHandler.sync(this);
44131 			switch ( getInterpreter().adaptivePredict(_input,719,_ctx) ) {
44132 			case 1:
44133 				enterOuterAlt(_localctx, 1);
44134 				{
44135 				setState(6127);
44136 				match(CONTROL);
44137 				setState(6129);
44138 				_errHandler.sync(this);
44139 				_la = _input.LA(1);
44140 				if (_la==SERVER) {
44141 					{
44142 					setState(6128);
44143 					match(SERVER);
44144 					}
44145 				}
44146 
44147 				}
44148 				break;
44149 			case 2:
44150 				enterOuterAlt(_localctx, 2);
44151 				{
44152 				setState(6131);
44153 				match(IMPERSONATE);
44154 				}
44155 				break;
44156 			case 3:
44157 				enterOuterAlt(_localctx, 3);
44158 				{
44159 				setState(6132);
44160 				match(VIEW);
44161 				setState(6134);
44162 				_errHandler.sync(this);
44163 				_la = _input.LA(1);
44164 				if (_la==ANY) {
44165 					{
44166 					setState(6133);
44167 					match(ANY);
44168 					}
44169 				}
44170 
44171 				setState(6136);
44172 				match(DEFINITION);
44173 				}
44174 				break;
44175 			case 4:
44176 				enterOuterAlt(_localctx, 4);
44177 				{
44178 				setState(6137);
44179 				match(ALTER);
44180 				}
44181 				break;
44182 			case 5:
44183 				enterOuterAlt(_localctx, 5);
44184 				{
44185 				setState(6138);
44186 				match(ALTER);
44187 				setState(6139);
44188 				match(ANY);
44189 				setState(6143);
44190 				_errHandler.sync(this);
44191 				switch (_input.LA(1)) {
44192 				case LOGIN:
44193 					{
44194 					setState(6140);
44195 					match(LOGIN);
44196 					}
44197 					break;
44198 				case SERVER:
44199 					{
44200 					setState(6141);
44201 					match(SERVER);
44202 					setState(6142);
44203 					match(ROLE);
44204 					}
44205 					break;
44206 				default:
44207 					throw new NoViableAltException(this);
44208 				}
44209 				}
44210 				break;
44211 			}
44212 		}
44213 		catch (RecognitionException re) {
44214 			_localctx.exception = re;
44215 			_errHandler.reportError(this, re);
44216 			_errHandler.recover(this, re);
44217 		}
44218 		finally {
44219 			exitRule();
44220 		}
44221 		return _localctx;
44222 	}
44223 
44224 	public static class DatabasePermissionContext extends ParserRuleContext {
44225 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
44226 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
44227 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
44228 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
44229 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44230 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
44231 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44232 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
44233 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
44234 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
44235 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
44236 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
44237 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
44238 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
44239 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
44240 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44241 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
44242 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
44243 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
44244 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
44245 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
44246 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
44247 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
44248 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
44249 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
44250 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
44251 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
44252 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
44253 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
44254 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44255 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
44256 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
44257 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
44258 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
44259 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
44260 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
44261 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
44262 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
44263 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
44264 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
44265 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
44266 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
44267 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
44268 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
44269 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
44270 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
44271 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
44272 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
44273 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
44274 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
44275 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
44276 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
44277 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
44278 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
44279 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
44280 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44281 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
44282 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
44283 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
44284 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
44285 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
44286 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
44287 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
44288 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
44289 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
44290 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44291 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
44292 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
44293 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
44294 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
44295 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
44296 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
44297 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
44298 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44299 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
44300 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
44301 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
44302 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
44303 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
44304 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44305 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44306 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
44307 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
44308 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
44309 		public DatabasePermissionContext(ParserRuleContext parent, int invokingState) {
44310 			super(parent, invokingState);
44311 		}
44312 		@Override public int getRuleIndex() { return RULE_databasePermission; }
44313 		@Override
44314 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44315 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePermission(this);
44316 			else return visitor.visitChildren(this);
44317 		}
44318 	}
44319 
44320 	public final DatabasePermissionContext databasePermission() throws RecognitionException {
44321 		DatabasePermissionContext _localctx = new DatabasePermissionContext(_ctx, getState());
44322 		enterRule(_localctx, 854, RULE_databasePermission);
44323 		int _la;
44324 		try {
44325 			setState(6314);
44326 			_errHandler.sync(this);
44327 			switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) {
44328 			case 1:
44329 				enterOuterAlt(_localctx, 1);
44330 				{
44331 				setState(6147);
44332 				match(ADMINISTER);
44333 				setState(6148);
44334 				match(DATABASE);
44335 				setState(6149);
44336 				match(BULK);
44337 				setState(6150);
44338 				match(OPERATIONS);
44339 				}
44340 				break;
44341 			case 2:
44342 				enterOuterAlt(_localctx, 2);
44343 				{
44344 				setState(6151);
44345 				match(ALTER);
44346 				}
44347 				break;
44348 			case 3:
44349 				enterOuterAlt(_localctx, 3);
44350 				{
44351 				setState(6152);
44352 				match(ALTER);
44353 				setState(6153);
44354 				match(TRACE);
44355 				}
44356 				break;
44357 			case 4:
44358 				enterOuterAlt(_localctx, 4);
44359 				{
44360 				setState(6154);
44361 				match(ALTER);
44362 				setState(6155);
44363 				match(ANY);
44364 				setState(6213);
44365 				_errHandler.sync(this);
44366 				switch ( getInterpreter().adaptivePredict(_input,723,_ctx) ) {
44367 				case 1:
44368 					{
44369 					setState(6156);
44370 					match(APPLICATION);
44371 					setState(6157);
44372 					match(ROLE);
44373 					}
44374 					break;
44375 				case 2:
44376 					{
44377 					setState(6158);
44378 					match(ASSEMBLY);
44379 					}
44380 					break;
44381 				case 3:
44382 					{
44383 					setState(6163);
44384 					_errHandler.sync(this);
44385 					switch (_input.LA(1)) {
44386 					case SYMMETRIC:
44387 						{
44388 						setState(6159);
44389 						match(SYMMETRIC);
44390 						}
44391 						break;
44392 					case ASYMMETRIC:
44393 						{
44394 						setState(6160);
44395 						match(ASYMMETRIC);
44396 						}
44397 						break;
44398 					case COLUMN:
44399 						{
44400 						setState(6161);
44401 						match(COLUMN);
44402 						setState(6162);
44403 						match(ENCRYPTION);
44404 						}
44405 						break;
44406 					default:
44407 						throw new NoViableAltException(this);
44408 					}
44409 					setState(6165);
44410 					match(KEY);
44411 					}
44412 					break;
44413 				case 4:
44414 					{
44415 					setState(6166);
44416 					match(CERTIFICATE);
44417 					}
44418 					break;
44419 				case 5:
44420 					{
44421 					setState(6167);
44422 					match(CONNECTION);
44423 					}
44424 					break;
44425 				case 6:
44426 					{
44427 					setState(6168);
44428 					match(COLUMN);
44429 					setState(6169);
44430 					match(MASTER);
44431 					setState(6170);
44432 					match(KEY);
44433 					setState(6171);
44434 					match(DEFINITION);
44435 					}
44436 					break;
44437 				case 7:
44438 					{
44439 					setState(6172);
44440 					match(CONTRACT);
44441 					}
44442 					break;
44443 				case 8:
44444 					{
44445 					setState(6173);
44446 					match(DATABASE);
44447 					setState(6183);
44448 					_errHandler.sync(this);
44449 					switch ( getInterpreter().adaptivePredict(_input,721,_ctx) ) {
44450 					case 1:
44451 						{
44452 						setState(6174);
44453 						match(AUDIT);
44454 						}
44455 						break;
44456 					case 2:
44457 						{
44458 						setState(6175);
44459 						match(DDL);
44460 						setState(6176);
44461 						match(TRIGGER);
44462 						}
44463 						break;
44464 					case 3:
44465 						{
44466 						setState(6177);
44467 						match(EVENT);
44468 						setState(6178);
44469 						match(NOTIFICATION);
44470 						}
44471 						break;
44472 					case 4:
44473 						{
44474 						setState(6179);
44475 						match(EVENT);
44476 						setState(6180);
44477 						match(SESSION);
44478 						}
44479 						break;
44480 					case 5:
44481 						{
44482 						setState(6181);
44483 						match(SCOPED);
44484 						setState(6182);
44485 						match(CONFIGURATION);
44486 						}
44487 						break;
44488 					}
44489 					}
44490 					break;
44491 				case 9:
44492 					{
44493 					setState(6185);
44494 					match(DATASPACE);
44495 					}
44496 					break;
44497 				case 10:
44498 					{
44499 					setState(6186);
44500 					match(EVENT);
44501 					setState(6187);
44502 					_la = _input.LA(1);
44503 					if ( !(_la==SESSION || _la==NOTIFICATION) ) {
44504 					_errHandler.recoverInline(this);
44505 					}
44506 					else {
44507 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44508 						_errHandler.reportMatch(this);
44509 						consume();
44510 					}
44511 					}
44512 					break;
44513 				case 11:
44514 					{
44515 					setState(6188);
44516 					match(EXTERNAL);
44517 					setState(6194);
44518 					_errHandler.sync(this);
44519 					switch (_input.LA(1)) {
44520 					case DATA:
44521 						{
44522 						setState(6189);
44523 						match(DATA);
44524 						setState(6190);
44525 						match(SOURCE);
44526 						}
44527 						break;
44528 					case FILE:
44529 						{
44530 						setState(6191);
44531 						match(FILE);
44532 						setState(6192);
44533 						match(FORMAT);
44534 						}
44535 						break;
44536 					case LIBRARY:
44537 						{
44538 						setState(6193);
44539 						match(LIBRARY);
44540 						}
44541 						break;
44542 					default:
44543 						throw new NoViableAltException(this);
44544 					}
44545 					}
44546 					break;
44547 				case 12:
44548 					{
44549 					setState(6196);
44550 					match(FULLTEXT);
44551 					setState(6197);
44552 					match(CATALOG);
44553 					}
44554 					break;
44555 				case 13:
44556 					{
44557 					setState(6198);
44558 					match(MASK);
44559 					}
44560 					break;
44561 				case 14:
44562 					{
44563 					setState(6199);
44564 					match(MESSAGE);
44565 					setState(6200);
44566 					match(TYPE);
44567 					}
44568 					break;
44569 				case 15:
44570 					{
44571 					setState(6201);
44572 					match(REMOTE);
44573 					setState(6202);
44574 					match(SERVICE);
44575 					setState(6203);
44576 					match(BINDING);
44577 					}
44578 					break;
44579 				case 16:
44580 					{
44581 					setState(6204);
44582 					match(ROLE);
44583 					}
44584 					break;
44585 				case 17:
44586 					{
44587 					setState(6205);
44588 					match(ROUTE);
44589 					}
44590 					break;
44591 				case 18:
44592 					{
44593 					setState(6206);
44594 					match(SERVER);
44595 					setState(6207);
44596 					match(AUDIT);
44597 					}
44598 					break;
44599 				case 19:
44600 					{
44601 					setState(6208);
44602 					match(SCHEMA);
44603 					}
44604 					break;
44605 				case 20:
44606 					{
44607 					setState(6209);
44608 					match(SECURITY);
44609 					setState(6210);
44610 					match(POLICY);
44611 					}
44612 					break;
44613 				case 21:
44614 					{
44615 					setState(6211);
44616 					match(SERVICE);
44617 					}
44618 					break;
44619 				case 22:
44620 					{
44621 					setState(6212);
44622 					match(USER);
44623 					}
44624 					break;
44625 				}
44626 				}
44627 				break;
44628 			case 5:
44629 				enterOuterAlt(_localctx, 5);
44630 				{
44631 				setState(6215);
44632 				match(AUTHENTICATE);
44633 				setState(6217);
44634 				_errHandler.sync(this);
44635 				_la = _input.LA(1);
44636 				if (_la==SERVER) {
44637 					{
44638 					setState(6216);
44639 					match(SERVER);
44640 					}
44641 				}
44642 
44643 				}
44644 				break;
44645 			case 6:
44646 				enterOuterAlt(_localctx, 6);
44647 				{
44648 				setState(6219);
44649 				match(BACKUP);
44650 				setState(6220);
44651 				_la = _input.LA(1);
44652 				if ( !(_la==DATABASE || _la==LOG) ) {
44653 				_errHandler.recoverInline(this);
44654 				}
44655 				else {
44656 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44657 					_errHandler.reportMatch(this);
44658 					consume();
44659 				}
44660 				}
44661 				break;
44662 			case 7:
44663 				enterOuterAlt(_localctx, 7);
44664 				{
44665 				setState(6221);
44666 				match(CHECKPOINT);
44667 				}
44668 				break;
44669 			case 8:
44670 				enterOuterAlt(_localctx, 8);
44671 				{
44672 				setState(6222);
44673 				match(CONNECT);
44674 				}
44675 				break;
44676 			case 9:
44677 				enterOuterAlt(_localctx, 9);
44678 				{
44679 				setState(6223);
44680 				match(CONNECT);
44681 				setState(6225);
44682 				_errHandler.sync(this);
44683 				_la = _input.LA(1);
44684 				if (_la==REPLICATION) {
44685 					{
44686 					setState(6224);
44687 					match(REPLICATION);
44688 					}
44689 				}
44690 
44691 				}
44692 				break;
44693 			case 10:
44694 				enterOuterAlt(_localctx, 10);
44695 				{
44696 				setState(6227);
44697 				match(CONTROL);
44698 				setState(6229);
44699 				_errHandler.sync(this);
44700 				_la = _input.LA(1);
44701 				if (_la==SERVER) {
44702 					{
44703 					setState(6228);
44704 					match(SERVER);
44705 					}
44706 				}
44707 
44708 				}
44709 				break;
44710 			case 11:
44711 				enterOuterAlt(_localctx, 11);
44712 				{
44713 				setState(6231);
44714 				match(CREATE);
44715 				setState(6268);
44716 				_errHandler.sync(this);
44717 				switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) {
44718 				case 1:
44719 					{
44720 					setState(6232);
44721 					match(AGGREGATE);
44722 					}
44723 					break;
44724 				case 2:
44725 					{
44726 					setState(6233);
44727 					match(ASSEMBLY);
44728 					}
44729 					break;
44730 				case 3:
44731 					{
44732 					setState(6234);
44733 					_la = _input.LA(1);
44734 					if ( !(_la==SYMMETRIC || _la==ASYMMETRIC) ) {
44735 					_errHandler.recoverInline(this);
44736 					}
44737 					else {
44738 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44739 						_errHandler.reportMatch(this);
44740 						consume();
44741 					}
44742 					setState(6235);
44743 					match(KEY);
44744 					}
44745 					break;
44746 				case 4:
44747 					{
44748 					setState(6236);
44749 					match(CERTIFICATE);
44750 					}
44751 					break;
44752 				case 5:
44753 					{
44754 					setState(6237);
44755 					match(CONTRACT);
44756 					}
44757 					break;
44758 				case 6:
44759 					{
44760 					setState(6238);
44761 					match(DATABASE);
44762 					}
44763 					break;
44764 				case 7:
44765 					{
44766 					setState(6240);
44767 					_errHandler.sync(this);
44768 					_la = _input.LA(1);
44769 					if (_la==DATABASE) {
44770 						{
44771 						setState(6239);
44772 						match(DATABASE);
44773 						}
44774 					}
44775 
44776 					setState(6242);
44777 					match(DDL);
44778 					setState(6243);
44779 					match(EVENT);
44780 					setState(6244);
44781 					match(NOTIFICATION);
44782 					}
44783 					break;
44784 				case 8:
44785 					{
44786 					setState(6245);
44787 					match(DEFAULT);
44788 					}
44789 					break;
44790 				case 9:
44791 					{
44792 					setState(6246);
44793 					match(FULLTEXT);
44794 					setState(6247);
44795 					match(CATALOG);
44796 					}
44797 					break;
44798 				case 10:
44799 					{
44800 					setState(6248);
44801 					match(FUNCTION);
44802 					}
44803 					break;
44804 				case 11:
44805 					{
44806 					setState(6249);
44807 					match(MESSAGE);
44808 					setState(6250);
44809 					match(TYPE);
44810 					}
44811 					break;
44812 				case 12:
44813 					{
44814 					setState(6251);
44815 					match(PROCEDURE);
44816 					}
44817 					break;
44818 				case 13:
44819 					{
44820 					setState(6252);
44821 					match(QUEUE);
44822 					}
44823 					break;
44824 				case 14:
44825 					{
44826 					setState(6253);
44827 					match(REMOTE);
44828 					setState(6254);
44829 					match(SERVICE);
44830 					setState(6255);
44831 					match(BINDING);
44832 					}
44833 					break;
44834 				case 15:
44835 					{
44836 					setState(6256);
44837 					match(ROLE);
44838 					}
44839 					break;
44840 				case 16:
44841 					{
44842 					setState(6257);
44843 					match(ROUTE);
44844 					}
44845 					break;
44846 				case 17:
44847 					{
44848 					setState(6258);
44849 					match(RULE);
44850 					}
44851 					break;
44852 				case 18:
44853 					{
44854 					setState(6259);
44855 					match(SCHEMA);
44856 					}
44857 					break;
44858 				case 19:
44859 					{
44860 					setState(6260);
44861 					match(SERVICE);
44862 					}
44863 					break;
44864 				case 20:
44865 					{
44866 					setState(6261);
44867 					match(SYNONYM);
44868 					}
44869 					break;
44870 				case 21:
44871 					{
44872 					setState(6262);
44873 					match(TABLE);
44874 					}
44875 					break;
44876 				case 22:
44877 					{
44878 					setState(6263);
44879 					match(TYPE);
44880 					}
44881 					break;
44882 				case 23:
44883 					{
44884 					setState(6264);
44885 					match(VIEW);
44886 					}
44887 					break;
44888 				case 24:
44889 					{
44890 					setState(6265);
44891 					match(XML);
44892 					setState(6266);
44893 					match(SCHEMA);
44894 					setState(6267);
44895 					match(COLLECTION);
44896 					}
44897 					break;
44898 				}
44899 				}
44900 				break;
44901 			case 12:
44902 				enterOuterAlt(_localctx, 12);
44903 				{
44904 				setState(6270);
44905 				match(DELETE);
44906 				}
44907 				break;
44908 			case 13:
44909 				enterOuterAlt(_localctx, 13);
44910 				{
44911 				setState(6271);
44912 				match(EXECUTE);
44913 				}
44914 				break;
44915 			case 14:
44916 				enterOuterAlt(_localctx, 14);
44917 				{
44918 				setState(6272);
44919 				match(EXECUTE);
44920 				setState(6274);
44921 				_errHandler.sync(this);
44922 				_la = _input.LA(1);
44923 				if (_la==ANY) {
44924 					{
44925 					setState(6273);
44926 					match(ANY);
44927 					}
44928 				}
44929 
44930 				setState(6276);
44931 				match(EXTERNAL);
44932 				setState(6277);
44933 				match(SCRIPT);
44934 				}
44935 				break;
44936 			case 15:
44937 				enterOuterAlt(_localctx, 15);
44938 				{
44939 				setState(6278);
44940 				match(INSERT);
44941 				}
44942 				break;
44943 			case 16:
44944 				enterOuterAlt(_localctx, 16);
44945 				{
44946 				setState(6279);
44947 				match(KILL);
44948 				setState(6280);
44949 				match(DATABASE);
44950 				setState(6281);
44951 				match(CONNECTION);
44952 				}
44953 				break;
44954 			case 17:
44955 				enterOuterAlt(_localctx, 17);
44956 				{
44957 				setState(6282);
44958 				match(REFERENCES);
44959 				}
44960 				break;
44961 			case 18:
44962 				enterOuterAlt(_localctx, 18);
44963 				{
44964 				setState(6283);
44965 				match(SELECT);
44966 				}
44967 				break;
44968 			case 19:
44969 				enterOuterAlt(_localctx, 19);
44970 				{
44971 				setState(6284);
44972 				match(SHOWPLAN);
44973 				}
44974 				break;
44975 			case 20:
44976 				enterOuterAlt(_localctx, 20);
44977 				{
44978 				setState(6285);
44979 				match(SUBSCRIBE);
44980 				setState(6286);
44981 				match(QUERY);
44982 				setState(6287);
44983 				match(NOTIFICATIONS);
44984 				}
44985 				break;
44986 			case 21:
44987 				enterOuterAlt(_localctx, 21);
44988 				{
44989 				setState(6288);
44990 				match(TAKE);
44991 				setState(6289);
44992 				match(OWNERSHIP);
44993 				}
44994 				break;
44995 			case 22:
44996 				enterOuterAlt(_localctx, 22);
44997 				{
44998 				setState(6290);
44999 				match(UNMASK);
45000 				}
45001 				break;
45002 			case 23:
45003 				enterOuterAlt(_localctx, 23);
45004 				{
45005 				setState(6291);
45006 				match(UPDATE);
45007 				}
45008 				break;
45009 			case 24:
45010 				enterOuterAlt(_localctx, 24);
45011 				{
45012 				setState(6292);
45013 				match(VIEW);
45014 				setState(6293);
45015 				match(ANY);
45016 				setState(6294);
45017 				match(COLUMN);
45018 				setState(6295);
45019 				_la = _input.LA(1);
45020 				if ( !(_la==ENCRYPTION || _la==MASTER) ) {
45021 				_errHandler.recoverInline(this);
45022 				}
45023 				else {
45024 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45025 					_errHandler.reportMatch(this);
45026 					consume();
45027 				}
45028 				setState(6296);
45029 				match(KEY);
45030 				setState(6297);
45031 				match(DEFINITION);
45032 				}
45033 				break;
45034 			case 25:
45035 				enterOuterAlt(_localctx, 25);
45036 				{
45037 				setState(6298);
45038 				match(CREATE);
45039 				setState(6299);
45040 				match(ANY);
45041 				setState(6303);
45042 				_errHandler.sync(this);
45043 				switch (_input.LA(1)) {
45044 				case DATABASE:
45045 					{
45046 					setState(6300);
45047 					match(DATABASE);
45048 					}
45049 					break;
45050 				case EXTERNAL:
45051 					{
45052 					setState(6301);
45053 					match(EXTERNAL);
45054 					setState(6302);
45055 					match(LIBRARY);
45056 					}
45057 					break;
45058 				default:
45059 					throw new NoViableAltException(this);
45060 				}
45061 				}
45062 				break;
45063 			case 26:
45064 				enterOuterAlt(_localctx, 26);
45065 				{
45066 				setState(6305);
45067 				match(VIEW);
45068 				setState(6306);
45069 				_la = _input.LA(1);
45070 				if ( !(_la==DATABASE || _la==SERVER) ) {
45071 				_errHandler.recoverInline(this);
45072 				}
45073 				else {
45074 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45075 					_errHandler.reportMatch(this);
45076 					consume();
45077 				}
45078 				setState(6307);
45079 				match(STATE);
45080 				}
45081 				break;
45082 			case 27:
45083 				enterOuterAlt(_localctx, 27);
45084 				{
45085 				setState(6308);
45086 				match(VIEW);
45087 				setState(6310);
45088 				_errHandler.sync(this);
45089 				_la = _input.LA(1);
45090 				if (_la==ANY) {
45091 					{
45092 					setState(6309);
45093 					match(ANY);
45094 					}
45095 				}
45096 
45097 				setState(6312);
45098 				match(DEFINITION);
45099 				}
45100 				break;
45101 			case 28:
45102 				enterOuterAlt(_localctx, 28);
45103 				{
45104 				}
45105 				break;
45106 			}
45107 		}
45108 		catch (RecognitionException re) {
45109 			_localctx.exception = re;
45110 			_errHandler.reportError(this, re);
45111 			_errHandler.recover(this, re);
45112 		}
45113 		finally {
45114 			exitRule();
45115 		}
45116 		return _localctx;
45117 	}
45118 
45119 	public static class DatabasePrincipalPermissionContext extends ParserRuleContext {
45120 		public DatabaseUserPermissionContext databaseUserPermission() {
45121 			return getRuleContext(DatabaseUserPermissionContext.class,0);
45122 		}
45123 		public DatabaseRolePermissionContext databaseRolePermission() {
45124 			return getRuleContext(DatabaseRolePermissionContext.class,0);
45125 		}
45126 		public ApplicationRolePermissionContext applicationRolePermission() {
45127 			return getRuleContext(ApplicationRolePermissionContext.class,0);
45128 		}
45129 		public DatabasePrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
45130 			super(parent, invokingState);
45131 		}
45132 		@Override public int getRuleIndex() { return RULE_databasePrincipalPermission; }
45133 		@Override
45134 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45135 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePrincipalPermission(this);
45136 			else return visitor.visitChildren(this);
45137 		}
45138 	}
45139 
45140 	public final DatabasePrincipalPermissionContext databasePrincipalPermission() throws RecognitionException {
45141 		DatabasePrincipalPermissionContext _localctx = new DatabasePrincipalPermissionContext(_ctx, getState());
45142 		enterRule(_localctx, 856, RULE_databasePrincipalPermission);
45143 		try {
45144 			setState(6319);
45145 			_errHandler.sync(this);
45146 			switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) {
45147 			case 1:
45148 				enterOuterAlt(_localctx, 1);
45149 				{
45150 				setState(6316);
45151 				databaseUserPermission();
45152 				}
45153 				break;
45154 			case 2:
45155 				enterOuterAlt(_localctx, 2);
45156 				{
45157 				setState(6317);
45158 				databaseRolePermission();
45159 				}
45160 				break;
45161 			case 3:
45162 				enterOuterAlt(_localctx, 3);
45163 				{
45164 				setState(6318);
45165 				applicationRolePermission();
45166 				}
45167 				break;
45168 			}
45169 		}
45170 		catch (RecognitionException re) {
45171 			_localctx.exception = re;
45172 			_errHandler.reportError(this, re);
45173 			_errHandler.recover(this, re);
45174 		}
45175 		finally {
45176 			exitRule();
45177 		}
45178 		return _localctx;
45179 	}
45180 
45181 	public static class DatabaseUserPermissionContext extends ParserRuleContext {
45182 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45183 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
45184 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45185 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45186 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45187 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45188 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
45189 		public DatabaseUserPermissionContext(ParserRuleContext parent, int invokingState) {
45190 			super(parent, invokingState);
45191 		}
45192 		@Override public int getRuleIndex() { return RULE_databaseUserPermission; }
45193 		@Override
45194 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45195 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseUserPermission(this);
45196 			else return visitor.visitChildren(this);
45197 		}
45198 	}
45199 
45200 	public final DatabaseUserPermissionContext databaseUserPermission() throws RecognitionException {
45201 		DatabaseUserPermissionContext _localctx = new DatabaseUserPermissionContext(_ctx, getState());
45202 		enterRule(_localctx, 858, RULE_databaseUserPermission);
45203 		try {
45204 			setState(6329);
45205 			_errHandler.sync(this);
45206 			switch ( getInterpreter().adaptivePredict(_input,734,_ctx) ) {
45207 			case 1:
45208 				enterOuterAlt(_localctx, 1);
45209 				{
45210 				setState(6321);
45211 				match(CONTROL);
45212 				}
45213 				break;
45214 			case 2:
45215 				enterOuterAlt(_localctx, 2);
45216 				{
45217 				setState(6322);
45218 				match(IMPERSONATE);
45219 				}
45220 				break;
45221 			case 3:
45222 				enterOuterAlt(_localctx, 3);
45223 				{
45224 				setState(6323);
45225 				match(ALTER);
45226 				}
45227 				break;
45228 			case 4:
45229 				enterOuterAlt(_localctx, 4);
45230 				{
45231 				setState(6324);
45232 				match(VIEW);
45233 				setState(6325);
45234 				match(DEFINITION);
45235 				}
45236 				break;
45237 			case 5:
45238 				enterOuterAlt(_localctx, 5);
45239 				{
45240 				setState(6326);
45241 				match(ALTER);
45242 				setState(6327);
45243 				match(ANY);
45244 				setState(6328);
45245 				match(USER);
45246 				}
45247 				break;
45248 			}
45249 		}
45250 		catch (RecognitionException re) {
45251 			_localctx.exception = re;
45252 			_errHandler.reportError(this, re);
45253 			_errHandler.recover(this, re);
45254 		}
45255 		finally {
45256 			exitRule();
45257 		}
45258 		return _localctx;
45259 	}
45260 
45261 	public static class DatabaseRolePermissionContext extends ParserRuleContext {
45262 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45263 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45264 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45265 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45266 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45267 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45268 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45269 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45270 		public DatabaseRolePermissionContext(ParserRuleContext parent, int invokingState) {
45271 			super(parent, invokingState);
45272 		}
45273 		@Override public int getRuleIndex() { return RULE_databaseRolePermission; }
45274 		@Override
45275 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45276 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseRolePermission(this);
45277 			else return visitor.visitChildren(this);
45278 		}
45279 	}
45280 
45281 	public final DatabaseRolePermissionContext databaseRolePermission() throws RecognitionException {
45282 		DatabaseRolePermissionContext _localctx = new DatabaseRolePermissionContext(_ctx, getState());
45283 		enterRule(_localctx, 860, RULE_databaseRolePermission);
45284 		try {
45285 			setState(6340);
45286 			_errHandler.sync(this);
45287 			switch ( getInterpreter().adaptivePredict(_input,735,_ctx) ) {
45288 			case 1:
45289 				enterOuterAlt(_localctx, 1);
45290 				{
45291 				setState(6331);
45292 				match(CONTROL);
45293 				}
45294 				break;
45295 			case 2:
45296 				enterOuterAlt(_localctx, 2);
45297 				{
45298 				setState(6332);
45299 				match(TAKE);
45300 				setState(6333);
45301 				match(OWNERSHIP);
45302 				}
45303 				break;
45304 			case 3:
45305 				enterOuterAlt(_localctx, 3);
45306 				{
45307 				setState(6334);
45308 				match(ALTER);
45309 				}
45310 				break;
45311 			case 4:
45312 				enterOuterAlt(_localctx, 4);
45313 				{
45314 				setState(6335);
45315 				match(VIEW);
45316 				setState(6336);
45317 				match(DEFINITION);
45318 				}
45319 				break;
45320 			case 5:
45321 				enterOuterAlt(_localctx, 5);
45322 				{
45323 				setState(6337);
45324 				match(ALTER);
45325 				setState(6338);
45326 				match(ANY);
45327 				setState(6339);
45328 				match(ROLE);
45329 				}
45330 				break;
45331 			}
45332 		}
45333 		catch (RecognitionException re) {
45334 			_localctx.exception = re;
45335 			_errHandler.reportError(this, re);
45336 			_errHandler.recover(this, re);
45337 		}
45338 		finally {
45339 			exitRule();
45340 		}
45341 		return _localctx;
45342 	}
45343 
45344 	public static class ApplicationRolePermissionContext extends ParserRuleContext {
45345 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45346 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45347 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45348 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45349 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45350 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
45351 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45352 		public ApplicationRolePermissionContext(ParserRuleContext parent, int invokingState) {
45353 			super(parent, invokingState);
45354 		}
45355 		@Override public int getRuleIndex() { return RULE_applicationRolePermission; }
45356 		@Override
45357 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45358 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApplicationRolePermission(this);
45359 			else return visitor.visitChildren(this);
45360 		}
45361 	}
45362 
45363 	public final ApplicationRolePermissionContext applicationRolePermission() throws RecognitionException {
45364 		ApplicationRolePermissionContext _localctx = new ApplicationRolePermissionContext(_ctx, getState());
45365 		enterRule(_localctx, 862, RULE_applicationRolePermission);
45366 		try {
45367 			setState(6350);
45368 			_errHandler.sync(this);
45369 			switch ( getInterpreter().adaptivePredict(_input,736,_ctx) ) {
45370 			case 1:
45371 				enterOuterAlt(_localctx, 1);
45372 				{
45373 				setState(6342);
45374 				match(CONTROL);
45375 				}
45376 				break;
45377 			case 2:
45378 				enterOuterAlt(_localctx, 2);
45379 				{
45380 				setState(6343);
45381 				match(ALTER);
45382 				}
45383 				break;
45384 			case 3:
45385 				enterOuterAlt(_localctx, 3);
45386 				{
45387 				setState(6344);
45388 				match(VIEW);
45389 				setState(6345);
45390 				match(DEFINITION);
45391 				}
45392 				break;
45393 			case 4:
45394 				enterOuterAlt(_localctx, 4);
45395 				{
45396 				setState(6346);
45397 				match(ALTER);
45398 				setState(6347);
45399 				match(ANY);
45400 				setState(6348);
45401 				match(APPLICATION);
45402 				setState(6349);
45403 				match(ROLE);
45404 				}
45405 				break;
45406 			}
45407 		}
45408 		catch (RecognitionException re) {
45409 			_localctx.exception = re;
45410 			_errHandler.reportError(this, re);
45411 			_errHandler.recover(this, re);
45412 		}
45413 		finally {
45414 			exitRule();
45415 		}
45416 		return _localctx;
45417 	}
45418 
45419 	public static class DatabaseScopedCredentialPermissionContext extends ParserRuleContext {
45420 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45421 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45422 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45423 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45424 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45425 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45426 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45427 		public DatabaseScopedCredentialPermissionContext(ParserRuleContext parent, int invokingState) {
45428 			super(parent, invokingState);
45429 		}
45430 		@Override public int getRuleIndex() { return RULE_databaseScopedCredentialPermission; }
45431 		@Override
45432 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45433 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseScopedCredentialPermission(this);
45434 			else return visitor.visitChildren(this);
45435 		}
45436 	}
45437 
45438 	public final DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() throws RecognitionException {
45439 		DatabaseScopedCredentialPermissionContext _localctx = new DatabaseScopedCredentialPermissionContext(_ctx, getState());
45440 		enterRule(_localctx, 864, RULE_databaseScopedCredentialPermission);
45441 		try {
45442 			setState(6359);
45443 			_errHandler.sync(this);
45444 			switch (_input.LA(1)) {
45445 			case CONTROL:
45446 				enterOuterAlt(_localctx, 1);
45447 				{
45448 				setState(6352);
45449 				match(CONTROL);
45450 				}
45451 				break;
45452 			case TAKE:
45453 				enterOuterAlt(_localctx, 2);
45454 				{
45455 				setState(6353);
45456 				match(TAKE);
45457 				setState(6354);
45458 				match(OWNERSHIP);
45459 				}
45460 				break;
45461 			case ALTER:
45462 				enterOuterAlt(_localctx, 3);
45463 				{
45464 				setState(6355);
45465 				match(ALTER);
45466 				}
45467 				break;
45468 			case REFERENCES:
45469 				enterOuterAlt(_localctx, 4);
45470 				{
45471 				setState(6356);
45472 				match(REFERENCES);
45473 				}
45474 				break;
45475 			case VIEW:
45476 				enterOuterAlt(_localctx, 5);
45477 				{
45478 				setState(6357);
45479 				match(VIEW);
45480 				setState(6358);
45481 				match(DEFINITION);
45482 				}
45483 				break;
45484 			default:
45485 				throw new NoViableAltException(this);
45486 			}
45487 		}
45488 		catch (RecognitionException re) {
45489 			_localctx.exception = re;
45490 			_errHandler.reportError(this, re);
45491 			_errHandler.recover(this, re);
45492 		}
45493 		finally {
45494 			exitRule();
45495 		}
45496 		return _localctx;
45497 	}
45498 
45499 	public static class SchemaPermissionContext extends ParserRuleContext {
45500 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45501 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45502 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
45503 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
45504 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
45505 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45506 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
45507 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45508 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
45509 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45510 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45511 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
45512 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45513 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
45514 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
45515 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45516 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45517 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
45518 		public SchemaPermissionContext(ParserRuleContext parent, int invokingState) {
45519 			super(parent, invokingState);
45520 		}
45521 		@Override public int getRuleIndex() { return RULE_schemaPermission; }
45522 		@Override
45523 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45524 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaPermission(this);
45525 			else return visitor.visitChildren(this);
45526 		}
45527 	}
45528 
45529 	public final SchemaPermissionContext schemaPermission() throws RecognitionException {
45530 		SchemaPermissionContext _localctx = new SchemaPermissionContext(_ctx, getState());
45531 		enterRule(_localctx, 866, RULE_schemaPermission);
45532 		try {
45533 			setState(6381);
45534 			_errHandler.sync(this);
45535 			switch ( getInterpreter().adaptivePredict(_input,738,_ctx) ) {
45536 			case 1:
45537 				enterOuterAlt(_localctx, 1);
45538 				{
45539 				setState(6361);
45540 				match(ALTER);
45541 				}
45542 				break;
45543 			case 2:
45544 				enterOuterAlt(_localctx, 2);
45545 				{
45546 				setState(6362);
45547 				match(CONTROL);
45548 				}
45549 				break;
45550 			case 3:
45551 				enterOuterAlt(_localctx, 3);
45552 				{
45553 				setState(6363);
45554 				match(CREATE);
45555 				setState(6364);
45556 				match(SEQUENCE);
45557 				}
45558 				break;
45559 			case 4:
45560 				enterOuterAlt(_localctx, 4);
45561 				{
45562 				setState(6365);
45563 				match(DELETE);
45564 				}
45565 				break;
45566 			case 5:
45567 				enterOuterAlt(_localctx, 5);
45568 				{
45569 				setState(6366);
45570 				match(EXECUTE);
45571 				}
45572 				break;
45573 			case 6:
45574 				enterOuterAlt(_localctx, 6);
45575 				{
45576 				setState(6367);
45577 				match(INSERT);
45578 				}
45579 				break;
45580 			case 7:
45581 				enterOuterAlt(_localctx, 7);
45582 				{
45583 				setState(6368);
45584 				match(REFERENCES);
45585 				}
45586 				break;
45587 			case 8:
45588 				enterOuterAlt(_localctx, 8);
45589 				{
45590 				setState(6369);
45591 				match(SELECT);
45592 				}
45593 				break;
45594 			case 9:
45595 				enterOuterAlt(_localctx, 9);
45596 				{
45597 				setState(6370);
45598 				match(TAKE);
45599 				setState(6371);
45600 				match(OWNERSHIP);
45601 				}
45602 				break;
45603 			case 10:
45604 				enterOuterAlt(_localctx, 10);
45605 				{
45606 				setState(6372);
45607 				match(UPDATE);
45608 				}
45609 				break;
45610 			case 11:
45611 				enterOuterAlt(_localctx, 11);
45612 				{
45613 				setState(6373);
45614 				match(VIEW);
45615 				setState(6374);
45616 				match(CHANGE);
45617 				setState(6375);
45618 				match(TRACKING);
45619 				}
45620 				break;
45621 			case 12:
45622 				enterOuterAlt(_localctx, 12);
45623 				{
45624 				setState(6376);
45625 				match(VIEW);
45626 				setState(6377);
45627 				match(DEFINITION);
45628 				}
45629 				break;
45630 			case 13:
45631 				enterOuterAlt(_localctx, 13);
45632 				{
45633 				setState(6378);
45634 				match(ALTER);
45635 				setState(6379);
45636 				match(ANY);
45637 				setState(6380);
45638 				match(SCHEMA);
45639 				}
45640 				break;
45641 			}
45642 		}
45643 		catch (RecognitionException re) {
45644 			_localctx.exception = re;
45645 			_errHandler.reportError(this, re);
45646 			_errHandler.recover(this, re);
45647 		}
45648 		finally {
45649 			exitRule();
45650 		}
45651 		return _localctx;
45652 	}
45653 
45654 	public static class SearchPropertyListPermissionContext extends ParserRuleContext {
45655 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45656 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45657 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45658 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45659 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45660 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45661 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45662 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45663 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
45664 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
45665 		public SearchPropertyListPermissionContext(ParserRuleContext parent, int invokingState) {
45666 			super(parent, invokingState);
45667 		}
45668 		@Override public int getRuleIndex() { return RULE_searchPropertyListPermission; }
45669 		@Override
45670 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45671 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSearchPropertyListPermission(this);
45672 			else return visitor.visitChildren(this);
45673 		}
45674 	}
45675 
45676 	public final SearchPropertyListPermissionContext searchPropertyListPermission() throws RecognitionException {
45677 		SearchPropertyListPermissionContext _localctx = new SearchPropertyListPermissionContext(_ctx, getState());
45678 		enterRule(_localctx, 868, RULE_searchPropertyListPermission);
45679 		try {
45680 			setState(6394);
45681 			_errHandler.sync(this);
45682 			switch ( getInterpreter().adaptivePredict(_input,739,_ctx) ) {
45683 			case 1:
45684 				enterOuterAlt(_localctx, 1);
45685 				{
45686 				setState(6383);
45687 				match(ALTER);
45688 				}
45689 				break;
45690 			case 2:
45691 				enterOuterAlt(_localctx, 2);
45692 				{
45693 				setState(6384);
45694 				match(CONTROL);
45695 				}
45696 				break;
45697 			case 3:
45698 				enterOuterAlt(_localctx, 3);
45699 				{
45700 				setState(6385);
45701 				match(REFERENCES);
45702 				}
45703 				break;
45704 			case 4:
45705 				enterOuterAlt(_localctx, 4);
45706 				{
45707 				setState(6386);
45708 				match(TAKE);
45709 				setState(6387);
45710 				match(OWNERSHIP);
45711 				}
45712 				break;
45713 			case 5:
45714 				enterOuterAlt(_localctx, 5);
45715 				{
45716 				setState(6388);
45717 				match(VIEW);
45718 				setState(6389);
45719 				match(DEFINITION);
45720 				}
45721 				break;
45722 			case 6:
45723 				enterOuterAlt(_localctx, 6);
45724 				{
45725 				setState(6390);
45726 				match(ALTER);
45727 				setState(6391);
45728 				match(ANY);
45729 				setState(6392);
45730 				match(FULLTEXT);
45731 				setState(6393);
45732 				match(CATALOG);
45733 				}
45734 				break;
45735 			}
45736 		}
45737 		catch (RecognitionException re) {
45738 			_localctx.exception = re;
45739 			_errHandler.reportError(this, re);
45740 			_errHandler.recover(this, re);
45741 		}
45742 		finally {
45743 			exitRule();
45744 		}
45745 		return _localctx;
45746 	}
45747 
45748 	public static class ServiceBrokerPermissionContext extends ParserRuleContext {
45749 		public ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() {
45750 			return getRuleContext(ServiceBrokerContractsPermissionContext.class,0);
45751 		}
45752 		public ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() {
45753 			return getRuleContext(ServiceBrokerMessageTypesPermissionContext.class,0);
45754 		}
45755 		public ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() {
45756 			return getRuleContext(ServiceBrokerRemoteServiceBindingsPermissionContext.class,0);
45757 		}
45758 		public ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() {
45759 			return getRuleContext(ServiceBrokerRoutesPermissionContext.class,0);
45760 		}
45761 		public ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() {
45762 			return getRuleContext(ServiceBrokerServicesPermissionContext.class,0);
45763 		}
45764 		public ServiceBrokerPermissionContext(ParserRuleContext parent, int invokingState) {
45765 			super(parent, invokingState);
45766 		}
45767 		@Override public int getRuleIndex() { return RULE_serviceBrokerPermission; }
45768 		@Override
45769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerPermission(this);
45771 			else return visitor.visitChildren(this);
45772 		}
45773 	}
45774 
45775 	public final ServiceBrokerPermissionContext serviceBrokerPermission() throws RecognitionException {
45776 		ServiceBrokerPermissionContext _localctx = new ServiceBrokerPermissionContext(_ctx, getState());
45777 		enterRule(_localctx, 870, RULE_serviceBrokerPermission);
45778 		try {
45779 			setState(6401);
45780 			_errHandler.sync(this);
45781 			switch ( getInterpreter().adaptivePredict(_input,740,_ctx) ) {
45782 			case 1:
45783 				enterOuterAlt(_localctx, 1);
45784 				{
45785 				setState(6396);
45786 				serviceBrokerContractsPermission();
45787 				}
45788 				break;
45789 			case 2:
45790 				enterOuterAlt(_localctx, 2);
45791 				{
45792 				setState(6397);
45793 				serviceBrokerMessageTypesPermission();
45794 				}
45795 				break;
45796 			case 3:
45797 				enterOuterAlt(_localctx, 3);
45798 				{
45799 				setState(6398);
45800 				serviceBrokerRemoteServiceBindingsPermission();
45801 				}
45802 				break;
45803 			case 4:
45804 				enterOuterAlt(_localctx, 4);
45805 				{
45806 				setState(6399);
45807 				serviceBrokerRoutesPermission();
45808 				}
45809 				break;
45810 			case 5:
45811 				enterOuterAlt(_localctx, 5);
45812 				{
45813 				setState(6400);
45814 				serviceBrokerServicesPermission();
45815 				}
45816 				break;
45817 			}
45818 		}
45819 		catch (RecognitionException re) {
45820 			_localctx.exception = re;
45821 			_errHandler.reportError(this, re);
45822 			_errHandler.recover(this, re);
45823 		}
45824 		finally {
45825 			exitRule();
45826 		}
45827 		return _localctx;
45828 	}
45829 
45830 	public static class ServiceBrokerContractsPermissionContext extends ParserRuleContext {
45831 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45832 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45833 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45834 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45835 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45836 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45837 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45838 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45839 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
45840 		public ServiceBrokerContractsPermissionContext(ParserRuleContext parent, int invokingState) {
45841 			super(parent, invokingState);
45842 		}
45843 		@Override public int getRuleIndex() { return RULE_serviceBrokerContractsPermission; }
45844 		@Override
45845 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45846 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerContractsPermission(this);
45847 			else return visitor.visitChildren(this);
45848 		}
45849 	}
45850 
45851 	public final ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() throws RecognitionException {
45852 		ServiceBrokerContractsPermissionContext _localctx = new ServiceBrokerContractsPermissionContext(_ctx, getState());
45853 		enterRule(_localctx, 872, RULE_serviceBrokerContractsPermission);
45854 		try {
45855 			setState(6413);
45856 			_errHandler.sync(this);
45857 			switch ( getInterpreter().adaptivePredict(_input,741,_ctx) ) {
45858 			case 1:
45859 				enterOuterAlt(_localctx, 1);
45860 				{
45861 				setState(6403);
45862 				match(CONTROL);
45863 				}
45864 				break;
45865 			case 2:
45866 				enterOuterAlt(_localctx, 2);
45867 				{
45868 				setState(6404);
45869 				match(TAKE);
45870 				setState(6405);
45871 				match(OWNERSHIP);
45872 				}
45873 				break;
45874 			case 3:
45875 				enterOuterAlt(_localctx, 3);
45876 				{
45877 				setState(6406);
45878 				match(ALTER);
45879 				}
45880 				break;
45881 			case 4:
45882 				enterOuterAlt(_localctx, 4);
45883 				{
45884 				setState(6407);
45885 				match(REFERENCES);
45886 				}
45887 				break;
45888 			case 5:
45889 				enterOuterAlt(_localctx, 5);
45890 				{
45891 				setState(6408);
45892 				match(VIEW);
45893 				setState(6409);
45894 				match(DEFINITION);
45895 				}
45896 				break;
45897 			case 6:
45898 				enterOuterAlt(_localctx, 6);
45899 				{
45900 				setState(6410);
45901 				match(ALTER);
45902 				setState(6411);
45903 				match(ANY);
45904 				setState(6412);
45905 				match(CONTRACT);
45906 				}
45907 				break;
45908 			}
45909 		}
45910 		catch (RecognitionException re) {
45911 			_localctx.exception = re;
45912 			_errHandler.reportError(this, re);
45913 			_errHandler.recover(this, re);
45914 		}
45915 		finally {
45916 			exitRule();
45917 		}
45918 		return _localctx;
45919 	}
45920 
45921 	public static class ServiceBrokerMessageTypesPermissionContext extends ParserRuleContext {
45922 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45923 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45924 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45925 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45926 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45927 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45928 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45929 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45930 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
45931 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
45932 		public ServiceBrokerMessageTypesPermissionContext(ParserRuleContext parent, int invokingState) {
45933 			super(parent, invokingState);
45934 		}
45935 		@Override public int getRuleIndex() { return RULE_serviceBrokerMessageTypesPermission; }
45936 		@Override
45937 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45938 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerMessageTypesPermission(this);
45939 			else return visitor.visitChildren(this);
45940 		}
45941 	}
45942 
45943 	public final ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() throws RecognitionException {
45944 		ServiceBrokerMessageTypesPermissionContext _localctx = new ServiceBrokerMessageTypesPermissionContext(_ctx, getState());
45945 		enterRule(_localctx, 874, RULE_serviceBrokerMessageTypesPermission);
45946 		try {
45947 			setState(6426);
45948 			_errHandler.sync(this);
45949 			switch ( getInterpreter().adaptivePredict(_input,742,_ctx) ) {
45950 			case 1:
45951 				enterOuterAlt(_localctx, 1);
45952 				{
45953 				setState(6415);
45954 				match(CONTROL);
45955 				}
45956 				break;
45957 			case 2:
45958 				enterOuterAlt(_localctx, 2);
45959 				{
45960 				setState(6416);
45961 				match(TAKE);
45962 				setState(6417);
45963 				match(OWNERSHIP);
45964 				}
45965 				break;
45966 			case 3:
45967 				enterOuterAlt(_localctx, 3);
45968 				{
45969 				setState(6418);
45970 				match(ALTER);
45971 				}
45972 				break;
45973 			case 4:
45974 				enterOuterAlt(_localctx, 4);
45975 				{
45976 				setState(6419);
45977 				match(REFERENCES);
45978 				}
45979 				break;
45980 			case 5:
45981 				enterOuterAlt(_localctx, 5);
45982 				{
45983 				setState(6420);
45984 				match(VIEW);
45985 				setState(6421);
45986 				match(DEFINITION);
45987 				}
45988 				break;
45989 			case 6:
45990 				enterOuterAlt(_localctx, 6);
45991 				{
45992 				setState(6422);
45993 				match(ALTER);
45994 				setState(6423);
45995 				match(ANY);
45996 				setState(6424);
45997 				match(MESSAGE);
45998 				setState(6425);
45999 				match(TYPE);
46000 				}
46001 				break;
46002 			}
46003 		}
46004 		catch (RecognitionException re) {
46005 			_localctx.exception = re;
46006 			_errHandler.reportError(this, re);
46007 			_errHandler.recover(this, re);
46008 		}
46009 		finally {
46010 			exitRule();
46011 		}
46012 		return _localctx;
46013 	}
46014 
46015 	public static class ServiceBrokerRemoteServiceBindingsPermissionContext extends ParserRuleContext {
46016 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46017 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46018 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46019 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46020 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46021 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46022 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46023 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
46024 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
46025 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
46026 		public ServiceBrokerRemoteServiceBindingsPermissionContext(ParserRuleContext parent, int invokingState) {
46027 			super(parent, invokingState);
46028 		}
46029 		@Override public int getRuleIndex() { return RULE_serviceBrokerRemoteServiceBindingsPermission; }
46030 		@Override
46031 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46032 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRemoteServiceBindingsPermission(this);
46033 			else return visitor.visitChildren(this);
46034 		}
46035 	}
46036 
46037 	public final ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() throws RecognitionException {
46038 		ServiceBrokerRemoteServiceBindingsPermissionContext _localctx = new ServiceBrokerRemoteServiceBindingsPermissionContext(_ctx, getState());
46039 		enterRule(_localctx, 876, RULE_serviceBrokerRemoteServiceBindingsPermission);
46040 		try {
46041 			setState(6439);
46042 			_errHandler.sync(this);
46043 			switch ( getInterpreter().adaptivePredict(_input,743,_ctx) ) {
46044 			case 1:
46045 				enterOuterAlt(_localctx, 1);
46046 				{
46047 				setState(6428);
46048 				match(CONTROL);
46049 				}
46050 				break;
46051 			case 2:
46052 				enterOuterAlt(_localctx, 2);
46053 				{
46054 				setState(6429);
46055 				match(TAKE);
46056 				setState(6430);
46057 				match(OWNERSHIP);
46058 				}
46059 				break;
46060 			case 3:
46061 				enterOuterAlt(_localctx, 3);
46062 				{
46063 				setState(6431);
46064 				match(ALTER);
46065 				}
46066 				break;
46067 			case 4:
46068 				enterOuterAlt(_localctx, 4);
46069 				{
46070 				setState(6432);
46071 				match(VIEW);
46072 				setState(6433);
46073 				match(DEFINITION);
46074 				}
46075 				break;
46076 			case 5:
46077 				enterOuterAlt(_localctx, 5);
46078 				{
46079 				setState(6434);
46080 				match(ALTER);
46081 				setState(6435);
46082 				match(ANY);
46083 				setState(6436);
46084 				match(REMOTE);
46085 				setState(6437);
46086 				match(SERVICE);
46087 				setState(6438);
46088 				match(BINDING);
46089 				}
46090 				break;
46091 			}
46092 		}
46093 		catch (RecognitionException re) {
46094 			_localctx.exception = re;
46095 			_errHandler.reportError(this, re);
46096 			_errHandler.recover(this, re);
46097 		}
46098 		finally {
46099 			exitRule();
46100 		}
46101 		return _localctx;
46102 	}
46103 
46104 	public static class ServiceBrokerRoutesPermissionContext extends ParserRuleContext {
46105 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46106 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46107 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46108 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46109 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46110 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46111 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46112 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
46113 		public ServiceBrokerRoutesPermissionContext(ParserRuleContext parent, int invokingState) {
46114 			super(parent, invokingState);
46115 		}
46116 		@Override public int getRuleIndex() { return RULE_serviceBrokerRoutesPermission; }
46117 		@Override
46118 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46119 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRoutesPermission(this);
46120 			else return visitor.visitChildren(this);
46121 		}
46122 	}
46123 
46124 	public final ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() throws RecognitionException {
46125 		ServiceBrokerRoutesPermissionContext _localctx = new ServiceBrokerRoutesPermissionContext(_ctx, getState());
46126 		enterRule(_localctx, 878, RULE_serviceBrokerRoutesPermission);
46127 		try {
46128 			setState(6450);
46129 			_errHandler.sync(this);
46130 			switch ( getInterpreter().adaptivePredict(_input,744,_ctx) ) {
46131 			case 1:
46132 				enterOuterAlt(_localctx, 1);
46133 				{
46134 				setState(6441);
46135 				match(CONTROL);
46136 				}
46137 				break;
46138 			case 2:
46139 				enterOuterAlt(_localctx, 2);
46140 				{
46141 				setState(6442);
46142 				match(TAKE);
46143 				setState(6443);
46144 				match(OWNERSHIP);
46145 				}
46146 				break;
46147 			case 3:
46148 				enterOuterAlt(_localctx, 3);
46149 				{
46150 				setState(6444);
46151 				match(ALTER);
46152 				}
46153 				break;
46154 			case 4:
46155 				enterOuterAlt(_localctx, 4);
46156 				{
46157 				setState(6445);
46158 				match(VIEW);
46159 				setState(6446);
46160 				match(DEFINITION);
46161 				}
46162 				break;
46163 			case 5:
46164 				enterOuterAlt(_localctx, 5);
46165 				{
46166 				setState(6447);
46167 				match(ALTER);
46168 				setState(6448);
46169 				match(ANY);
46170 				setState(6449);
46171 				match(ROUTE);
46172 				}
46173 				break;
46174 			}
46175 		}
46176 		catch (RecognitionException re) {
46177 			_localctx.exception = re;
46178 			_errHandler.reportError(this, re);
46179 			_errHandler.recover(this, re);
46180 		}
46181 		finally {
46182 			exitRule();
46183 		}
46184 		return _localctx;
46185 	}
46186 
46187 	public static class ServiceBrokerServicesPermissionContext extends ParserRuleContext {
46188 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46189 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46190 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46191 		public TerminalNode SEND() { return getToken(SQLServerStatementParser.SEND, 0); }
46192 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46193 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46194 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46195 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46196 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
46197 		public ServiceBrokerServicesPermissionContext(ParserRuleContext parent, int invokingState) {
46198 			super(parent, invokingState);
46199 		}
46200 		@Override public int getRuleIndex() { return RULE_serviceBrokerServicesPermission; }
46201 		@Override
46202 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46203 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerServicesPermission(this);
46204 			else return visitor.visitChildren(this);
46205 		}
46206 	}
46207 
46208 	public final ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() throws RecognitionException {
46209 		ServiceBrokerServicesPermissionContext _localctx = new ServiceBrokerServicesPermissionContext(_ctx, getState());
46210 		enterRule(_localctx, 880, RULE_serviceBrokerServicesPermission);
46211 		try {
46212 			setState(6462);
46213 			_errHandler.sync(this);
46214 			switch ( getInterpreter().adaptivePredict(_input,745,_ctx) ) {
46215 			case 1:
46216 				enterOuterAlt(_localctx, 1);
46217 				{
46218 				setState(6452);
46219 				match(CONTROL);
46220 				}
46221 				break;
46222 			case 2:
46223 				enterOuterAlt(_localctx, 2);
46224 				{
46225 				setState(6453);
46226 				match(TAKE);
46227 				setState(6454);
46228 				match(OWNERSHIP);
46229 				}
46230 				break;
46231 			case 3:
46232 				enterOuterAlt(_localctx, 3);
46233 				{
46234 				setState(6455);
46235 				match(SEND);
46236 				}
46237 				break;
46238 			case 4:
46239 				enterOuterAlt(_localctx, 4);
46240 				{
46241 				setState(6456);
46242 				match(ALTER);
46243 				}
46244 				break;
46245 			case 5:
46246 				enterOuterAlt(_localctx, 5);
46247 				{
46248 				setState(6457);
46249 				match(VIEW);
46250 				setState(6458);
46251 				match(DEFINITION);
46252 				}
46253 				break;
46254 			case 6:
46255 				enterOuterAlt(_localctx, 6);
46256 				{
46257 				setState(6459);
46258 				match(ALTER);
46259 				setState(6460);
46260 				match(ANY);
46261 				setState(6461);
46262 				match(SERVICE);
46263 				}
46264 				break;
46265 			}
46266 		}
46267 		catch (RecognitionException re) {
46268 			_localctx.exception = re;
46269 			_errHandler.reportError(this, re);
46270 			_errHandler.recover(this, re);
46271 		}
46272 		finally {
46273 			exitRule();
46274 		}
46275 		return _localctx;
46276 	}
46277 
46278 	public static class EndpointPermissionContext extends ParserRuleContext {
46279 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46280 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
46281 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46282 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
46283 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46284 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46285 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46286 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46287 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46288 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
46289 		public EndpointPermissionContext(ParserRuleContext parent, int invokingState) {
46290 			super(parent, invokingState);
46291 		}
46292 		@Override public int getRuleIndex() { return RULE_endpointPermission; }
46293 		@Override
46294 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46295 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEndpointPermission(this);
46296 			else return visitor.visitChildren(this);
46297 		}
46298 	}
46299 
46300 	public final EndpointPermissionContext endpointPermission() throws RecognitionException {
46301 		EndpointPermissionContext _localctx = new EndpointPermissionContext(_ctx, getState());
46302 		enterRule(_localctx, 882, RULE_endpointPermission);
46303 		int _la;
46304 		try {
46305 			setState(6480);
46306 			_errHandler.sync(this);
46307 			switch ( getInterpreter().adaptivePredict(_input,748,_ctx) ) {
46308 			case 1:
46309 				enterOuterAlt(_localctx, 1);
46310 				{
46311 				setState(6464);
46312 				match(ALTER);
46313 				}
46314 				break;
46315 			case 2:
46316 				enterOuterAlt(_localctx, 2);
46317 				{
46318 				setState(6465);
46319 				match(CONNECT);
46320 				}
46321 				break;
46322 			case 3:
46323 				enterOuterAlt(_localctx, 3);
46324 				{
46325 				setState(6466);
46326 				match(CONTROL);
46327 				setState(6468);
46328 				_errHandler.sync(this);
46329 				_la = _input.LA(1);
46330 				if (_la==SERVER) {
46331 					{
46332 					setState(6467);
46333 					match(SERVER);
46334 					}
46335 				}
46336 
46337 				}
46338 				break;
46339 			case 4:
46340 				enterOuterAlt(_localctx, 4);
46341 				{
46342 				setState(6470);
46343 				match(TAKE);
46344 				setState(6471);
46345 				match(OWNERSHIP);
46346 				}
46347 				break;
46348 			case 5:
46349 				enterOuterAlt(_localctx, 5);
46350 				{
46351 				setState(6472);
46352 				match(VIEW);
46353 				setState(6474);
46354 				_errHandler.sync(this);
46355 				_la = _input.LA(1);
46356 				if (_la==ANY) {
46357 					{
46358 					setState(6473);
46359 					match(ANY);
46360 					}
46361 				}
46362 
46363 				setState(6476);
46364 				match(DEFINITION);
46365 				}
46366 				break;
46367 			case 6:
46368 				enterOuterAlt(_localctx, 6);
46369 				{
46370 				setState(6477);
46371 				match(ALTER);
46372 				setState(6478);
46373 				match(ANY);
46374 				setState(6479);
46375 				match(ENDPOINT);
46376 				}
46377 				break;
46378 			}
46379 		}
46380 		catch (RecognitionException re) {
46381 			_localctx.exception = re;
46382 			_errHandler.reportError(this, re);
46383 			_errHandler.recover(this, re);
46384 		}
46385 		finally {
46386 			exitRule();
46387 		}
46388 		return _localctx;
46389 	}
46390 
46391 	public static class CertificatePermissionContext extends ParserRuleContext {
46392 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46393 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46394 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46395 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46396 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46397 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46398 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46399 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46400 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
46401 		public CertificatePermissionContext(ParserRuleContext parent, int invokingState) {
46402 			super(parent, invokingState);
46403 		}
46404 		@Override public int getRuleIndex() { return RULE_certificatePermission; }
46405 		@Override
46406 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46407 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCertificatePermission(this);
46408 			else return visitor.visitChildren(this);
46409 		}
46410 	}
46411 
46412 	public final CertificatePermissionContext certificatePermission() throws RecognitionException {
46413 		CertificatePermissionContext _localctx = new CertificatePermissionContext(_ctx, getState());
46414 		enterRule(_localctx, 884, RULE_certificatePermission);
46415 		try {
46416 			setState(6492);
46417 			_errHandler.sync(this);
46418 			switch ( getInterpreter().adaptivePredict(_input,749,_ctx) ) {
46419 			case 1:
46420 				enterOuterAlt(_localctx, 1);
46421 				{
46422 				setState(6482);
46423 				match(CONTROL);
46424 				}
46425 				break;
46426 			case 2:
46427 				enterOuterAlt(_localctx, 2);
46428 				{
46429 				setState(6483);
46430 				match(TAKE);
46431 				setState(6484);
46432 				match(OWNERSHIP);
46433 				}
46434 				break;
46435 			case 3:
46436 				enterOuterAlt(_localctx, 3);
46437 				{
46438 				setState(6485);
46439 				match(ALTER);
46440 				}
46441 				break;
46442 			case 4:
46443 				enterOuterAlt(_localctx, 4);
46444 				{
46445 				setState(6486);
46446 				match(REFERENCES);
46447 				}
46448 				break;
46449 			case 5:
46450 				enterOuterAlt(_localctx, 5);
46451 				{
46452 				setState(6487);
46453 				match(VIEW);
46454 				setState(6488);
46455 				match(DEFINITION);
46456 				}
46457 				break;
46458 			case 6:
46459 				enterOuterAlt(_localctx, 6);
46460 				{
46461 				setState(6489);
46462 				match(ALTER);
46463 				setState(6490);
46464 				match(ANY);
46465 				setState(6491);
46466 				match(CERTIFICATE);
46467 				}
46468 				break;
46469 			}
46470 		}
46471 		catch (RecognitionException re) {
46472 			_localctx.exception = re;
46473 			_errHandler.reportError(this, re);
46474 			_errHandler.recover(this, re);
46475 		}
46476 		finally {
46477 			exitRule();
46478 		}
46479 		return _localctx;
46480 	}
46481 
46482 	public static class SymmetricKeyPermissionContext extends ParserRuleContext {
46483 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46484 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46485 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46486 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46487 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46488 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46489 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46490 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46491 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
46492 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46493 		public SymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
46494 			super(parent, invokingState);
46495 		}
46496 		@Override public int getRuleIndex() { return RULE_symmetricKeyPermission; }
46497 		@Override
46498 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46499 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSymmetricKeyPermission(this);
46500 			else return visitor.visitChildren(this);
46501 		}
46502 	}
46503 
46504 	public final SymmetricKeyPermissionContext symmetricKeyPermission() throws RecognitionException {
46505 		SymmetricKeyPermissionContext _localctx = new SymmetricKeyPermissionContext(_ctx, getState());
46506 		enterRule(_localctx, 886, RULE_symmetricKeyPermission);
46507 		try {
46508 			setState(6505);
46509 			_errHandler.sync(this);
46510 			switch ( getInterpreter().adaptivePredict(_input,750,_ctx) ) {
46511 			case 1:
46512 				enterOuterAlt(_localctx, 1);
46513 				{
46514 				setState(6494);
46515 				match(ALTER);
46516 				}
46517 				break;
46518 			case 2:
46519 				enterOuterAlt(_localctx, 2);
46520 				{
46521 				setState(6495);
46522 				match(CONTROL);
46523 				}
46524 				break;
46525 			case 3:
46526 				enterOuterAlt(_localctx, 3);
46527 				{
46528 				setState(6496);
46529 				match(REFERENCES);
46530 				}
46531 				break;
46532 			case 4:
46533 				enterOuterAlt(_localctx, 4);
46534 				{
46535 				setState(6497);
46536 				match(TAKE);
46537 				setState(6498);
46538 				match(OWNERSHIP);
46539 				}
46540 				break;
46541 			case 5:
46542 				enterOuterAlt(_localctx, 5);
46543 				{
46544 				setState(6499);
46545 				match(VIEW);
46546 				setState(6500);
46547 				match(DEFINITION);
46548 				}
46549 				break;
46550 			case 6:
46551 				enterOuterAlt(_localctx, 6);
46552 				{
46553 				setState(6501);
46554 				match(ALTER);
46555 				setState(6502);
46556 				match(ANY);
46557 				setState(6503);
46558 				match(SYMMETRIC);
46559 				setState(6504);
46560 				match(KEY);
46561 				}
46562 				break;
46563 			}
46564 		}
46565 		catch (RecognitionException re) {
46566 			_localctx.exception = re;
46567 			_errHandler.reportError(this, re);
46568 			_errHandler.recover(this, re);
46569 		}
46570 		finally {
46571 			exitRule();
46572 		}
46573 		return _localctx;
46574 	}
46575 
46576 	public static class AsymmetricKeyPermissionContext extends ParserRuleContext {
46577 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46578 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46579 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46580 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46581 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46582 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46583 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46584 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46585 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
46586 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46587 		public AsymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
46588 			super(parent, invokingState);
46589 		}
46590 		@Override public int getRuleIndex() { return RULE_asymmetricKeyPermission; }
46591 		@Override
46592 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46593 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAsymmetricKeyPermission(this);
46594 			else return visitor.visitChildren(this);
46595 		}
46596 	}
46597 
46598 	public final AsymmetricKeyPermissionContext asymmetricKeyPermission() throws RecognitionException {
46599 		AsymmetricKeyPermissionContext _localctx = new AsymmetricKeyPermissionContext(_ctx, getState());
46600 		enterRule(_localctx, 888, RULE_asymmetricKeyPermission);
46601 		try {
46602 			setState(6518);
46603 			_errHandler.sync(this);
46604 			switch ( getInterpreter().adaptivePredict(_input,751,_ctx) ) {
46605 			case 1:
46606 				enterOuterAlt(_localctx, 1);
46607 				{
46608 				setState(6507);
46609 				match(CONTROL);
46610 				}
46611 				break;
46612 			case 2:
46613 				enterOuterAlt(_localctx, 2);
46614 				{
46615 				setState(6508);
46616 				match(TAKE);
46617 				setState(6509);
46618 				match(OWNERSHIP);
46619 				}
46620 				break;
46621 			case 3:
46622 				enterOuterAlt(_localctx, 3);
46623 				{
46624 				setState(6510);
46625 				match(ALTER);
46626 				}
46627 				break;
46628 			case 4:
46629 				enterOuterAlt(_localctx, 4);
46630 				{
46631 				setState(6511);
46632 				match(REFERENCES);
46633 				}
46634 				break;
46635 			case 5:
46636 				enterOuterAlt(_localctx, 5);
46637 				{
46638 				setState(6512);
46639 				match(VIEW);
46640 				setState(6513);
46641 				match(DEFINITION);
46642 				}
46643 				break;
46644 			case 6:
46645 				enterOuterAlt(_localctx, 6);
46646 				{
46647 				setState(6514);
46648 				match(ALTER);
46649 				setState(6515);
46650 				match(ANY);
46651 				setState(6516);
46652 				match(ASYMMETRIC);
46653 				setState(6517);
46654 				match(KEY);
46655 				}
46656 				break;
46657 			}
46658 		}
46659 		catch (RecognitionException re) {
46660 			_localctx.exception = re;
46661 			_errHandler.reportError(this, re);
46662 			_errHandler.recover(this, re);
46663 		}
46664 		finally {
46665 			exitRule();
46666 		}
46667 		return _localctx;
46668 	}
46669 
46670 	public static class AssemblyPermissionContext extends ParserRuleContext {
46671 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46672 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46673 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46674 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46675 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46676 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46677 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46678 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46679 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
46680 		public AssemblyPermissionContext(ParserRuleContext parent, int invokingState) {
46681 			super(parent, invokingState);
46682 		}
46683 		@Override public int getRuleIndex() { return RULE_assemblyPermission; }
46684 		@Override
46685 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46686 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssemblyPermission(this);
46687 			else return visitor.visitChildren(this);
46688 		}
46689 	}
46690 
46691 	public final AssemblyPermissionContext assemblyPermission() throws RecognitionException {
46692 		AssemblyPermissionContext _localctx = new AssemblyPermissionContext(_ctx, getState());
46693 		enterRule(_localctx, 890, RULE_assemblyPermission);
46694 		try {
46695 			setState(6530);
46696 			_errHandler.sync(this);
46697 			switch ( getInterpreter().adaptivePredict(_input,752,_ctx) ) {
46698 			case 1:
46699 				enterOuterAlt(_localctx, 1);
46700 				{
46701 				setState(6520);
46702 				match(CONTROL);
46703 				}
46704 				break;
46705 			case 2:
46706 				enterOuterAlt(_localctx, 2);
46707 				{
46708 				setState(6521);
46709 				match(TAKE);
46710 				setState(6522);
46711 				match(OWNERSHIP);
46712 				}
46713 				break;
46714 			case 3:
46715 				enterOuterAlt(_localctx, 3);
46716 				{
46717 				setState(6523);
46718 				match(ALTER);
46719 				}
46720 				break;
46721 			case 4:
46722 				enterOuterAlt(_localctx, 4);
46723 				{
46724 				setState(6524);
46725 				match(REFERENCES);
46726 				}
46727 				break;
46728 			case 5:
46729 				enterOuterAlt(_localctx, 5);
46730 				{
46731 				setState(6525);
46732 				match(VIEW);
46733 				setState(6526);
46734 				match(DEFINITION);
46735 				}
46736 				break;
46737 			case 6:
46738 				enterOuterAlt(_localctx, 6);
46739 				{
46740 				setState(6527);
46741 				match(ALTER);
46742 				setState(6528);
46743 				match(ANY);
46744 				setState(6529);
46745 				match(ASSEMBLY);
46746 				}
46747 				break;
46748 			}
46749 		}
46750 		catch (RecognitionException re) {
46751 			_localctx.exception = re;
46752 			_errHandler.reportError(this, re);
46753 			_errHandler.recover(this, re);
46754 		}
46755 		finally {
46756 			exitRule();
46757 		}
46758 		return _localctx;
46759 	}
46760 
46761 	public static class AvailabilityGroupPermissionContext extends ParserRuleContext {
46762 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46763 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
46764 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46765 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
46766 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46767 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46768 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46769 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46770 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46771 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
46772 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
46773 		public AvailabilityGroupPermissionContext(ParserRuleContext parent, int invokingState) {
46774 			super(parent, invokingState);
46775 		}
46776 		@Override public int getRuleIndex() { return RULE_availabilityGroupPermission; }
46777 		@Override
46778 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46779 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAvailabilityGroupPermission(this);
46780 			else return visitor.visitChildren(this);
46781 		}
46782 	}
46783 
46784 	public final AvailabilityGroupPermissionContext availabilityGroupPermission() throws RecognitionException {
46785 		AvailabilityGroupPermissionContext _localctx = new AvailabilityGroupPermissionContext(_ctx, getState());
46786 		enterRule(_localctx, 892, RULE_availabilityGroupPermission);
46787 		int _la;
46788 		try {
46789 			setState(6549);
46790 			_errHandler.sync(this);
46791 			switch ( getInterpreter().adaptivePredict(_input,755,_ctx) ) {
46792 			case 1:
46793 				enterOuterAlt(_localctx, 1);
46794 				{
46795 				setState(6532);
46796 				match(ALTER);
46797 				}
46798 				break;
46799 			case 2:
46800 				enterOuterAlt(_localctx, 2);
46801 				{
46802 				setState(6533);
46803 				match(CONNECT);
46804 				}
46805 				break;
46806 			case 3:
46807 				enterOuterAlt(_localctx, 3);
46808 				{
46809 				setState(6534);
46810 				match(CONTROL);
46811 				setState(6536);
46812 				_errHandler.sync(this);
46813 				_la = _input.LA(1);
46814 				if (_la==SERVER) {
46815 					{
46816 					setState(6535);
46817 					match(SERVER);
46818 					}
46819 				}
46820 
46821 				}
46822 				break;
46823 			case 4:
46824 				enterOuterAlt(_localctx, 4);
46825 				{
46826 				setState(6538);
46827 				match(TAKE);
46828 				setState(6539);
46829 				match(OWNERSHIP);
46830 				}
46831 				break;
46832 			case 5:
46833 				enterOuterAlt(_localctx, 5);
46834 				{
46835 				setState(6540);
46836 				match(VIEW);
46837 				setState(6542);
46838 				_errHandler.sync(this);
46839 				_la = _input.LA(1);
46840 				if (_la==ANY) {
46841 					{
46842 					setState(6541);
46843 					match(ANY);
46844 					}
46845 				}
46846 
46847 				setState(6544);
46848 				match(DEFINITION);
46849 				}
46850 				break;
46851 			case 6:
46852 				enterOuterAlt(_localctx, 6);
46853 				{
46854 				setState(6545);
46855 				match(ALTER);
46856 				setState(6546);
46857 				match(ANY);
46858 				setState(6547);
46859 				match(AVAILABILITY);
46860 				setState(6548);
46861 				match(GROUP);
46862 				}
46863 				break;
46864 			}
46865 		}
46866 		catch (RecognitionException re) {
46867 			_localctx.exception = re;
46868 			_errHandler.reportError(this, re);
46869 			_errHandler.recover(this, re);
46870 		}
46871 		finally {
46872 			exitRule();
46873 		}
46874 		return _localctx;
46875 	}
46876 
46877 	public static class FullTextPermissionContext extends ParserRuleContext {
46878 		public FullTextCatalogPermissionContext fullTextCatalogPermission() {
46879 			return getRuleContext(FullTextCatalogPermissionContext.class,0);
46880 		}
46881 		public FullTextStoplistPermissionContext fullTextStoplistPermission() {
46882 			return getRuleContext(FullTextStoplistPermissionContext.class,0);
46883 		}
46884 		public FullTextPermissionContext(ParserRuleContext parent, int invokingState) {
46885 			super(parent, invokingState);
46886 		}
46887 		@Override public int getRuleIndex() { return RULE_fullTextPermission; }
46888 		@Override
46889 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46890 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextPermission(this);
46891 			else return visitor.visitChildren(this);
46892 		}
46893 	}
46894 
46895 	public final FullTextPermissionContext fullTextPermission() throws RecognitionException {
46896 		FullTextPermissionContext _localctx = new FullTextPermissionContext(_ctx, getState());
46897 		enterRule(_localctx, 894, RULE_fullTextPermission);
46898 		try {
46899 			setState(6553);
46900 			_errHandler.sync(this);
46901 			switch ( getInterpreter().adaptivePredict(_input,756,_ctx) ) {
46902 			case 1:
46903 				enterOuterAlt(_localctx, 1);
46904 				{
46905 				setState(6551);
46906 				fullTextCatalogPermission();
46907 				}
46908 				break;
46909 			case 2:
46910 				enterOuterAlt(_localctx, 2);
46911 				{
46912 				setState(6552);
46913 				fullTextStoplistPermission();
46914 				}
46915 				break;
46916 			}
46917 		}
46918 		catch (RecognitionException re) {
46919 			_localctx.exception = re;
46920 			_errHandler.reportError(this, re);
46921 			_errHandler.recover(this, re);
46922 		}
46923 		finally {
46924 			exitRule();
46925 		}
46926 		return _localctx;
46927 	}
46928 
46929 	public static class FullTextCatalogPermissionContext extends ParserRuleContext {
46930 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46931 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46932 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46933 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46934 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46935 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46936 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46937 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46938 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
46939 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
46940 		public FullTextCatalogPermissionContext(ParserRuleContext parent, int invokingState) {
46941 			super(parent, invokingState);
46942 		}
46943 		@Override public int getRuleIndex() { return RULE_fullTextCatalogPermission; }
46944 		@Override
46945 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46946 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextCatalogPermission(this);
46947 			else return visitor.visitChildren(this);
46948 		}
46949 	}
46950 
46951 	public final FullTextCatalogPermissionContext fullTextCatalogPermission() throws RecognitionException {
46952 		FullTextCatalogPermissionContext _localctx = new FullTextCatalogPermissionContext(_ctx, getState());
46953 		enterRule(_localctx, 896, RULE_fullTextCatalogPermission);
46954 		try {
46955 			setState(6566);
46956 			_errHandler.sync(this);
46957 			switch ( getInterpreter().adaptivePredict(_input,757,_ctx) ) {
46958 			case 1:
46959 				enterOuterAlt(_localctx, 1);
46960 				{
46961 				setState(6555);
46962 				match(CONTROL);
46963 				}
46964 				break;
46965 			case 2:
46966 				enterOuterAlt(_localctx, 2);
46967 				{
46968 				setState(6556);
46969 				match(TAKE);
46970 				setState(6557);
46971 				match(OWNERSHIP);
46972 				}
46973 				break;
46974 			case 3:
46975 				enterOuterAlt(_localctx, 3);
46976 				{
46977 				setState(6558);
46978 				match(ALTER);
46979 				}
46980 				break;
46981 			case 4:
46982 				enterOuterAlt(_localctx, 4);
46983 				{
46984 				setState(6559);
46985 				match(REFERENCES);
46986 				}
46987 				break;
46988 			case 5:
46989 				enterOuterAlt(_localctx, 5);
46990 				{
46991 				setState(6560);
46992 				match(VIEW);
46993 				setState(6561);
46994 				match(DEFINITION);
46995 				}
46996 				break;
46997 			case 6:
46998 				enterOuterAlt(_localctx, 6);
46999 				{
47000 				setState(6562);
47001 				match(ALTER);
47002 				setState(6563);
47003 				match(ANY);
47004 				setState(6564);
47005 				match(FULLTEXT);
47006 				setState(6565);
47007 				match(CATALOG);
47008 				}
47009 				break;
47010 			}
47011 		}
47012 		catch (RecognitionException re) {
47013 			_localctx.exception = re;
47014 			_errHandler.reportError(this, re);
47015 			_errHandler.recover(this, re);
47016 		}
47017 		finally {
47018 			exitRule();
47019 		}
47020 		return _localctx;
47021 	}
47022 
47023 	public static class FullTextStoplistPermissionContext extends ParserRuleContext {
47024 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
47025 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47026 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47027 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47028 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47029 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47030 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47031 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
47032 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
47033 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
47034 		public FullTextStoplistPermissionContext(ParserRuleContext parent, int invokingState) {
47035 			super(parent, invokingState);
47036 		}
47037 		@Override public int getRuleIndex() { return RULE_fullTextStoplistPermission; }
47038 		@Override
47039 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47040 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextStoplistPermission(this);
47041 			else return visitor.visitChildren(this);
47042 		}
47043 	}
47044 
47045 	public final FullTextStoplistPermissionContext fullTextStoplistPermission() throws RecognitionException {
47046 		FullTextStoplistPermissionContext _localctx = new FullTextStoplistPermissionContext(_ctx, getState());
47047 		enterRule(_localctx, 898, RULE_fullTextStoplistPermission);
47048 		try {
47049 			setState(6579);
47050 			_errHandler.sync(this);
47051 			switch ( getInterpreter().adaptivePredict(_input,758,_ctx) ) {
47052 			case 1:
47053 				enterOuterAlt(_localctx, 1);
47054 				{
47055 				setState(6568);
47056 				match(ALTER);
47057 				}
47058 				break;
47059 			case 2:
47060 				enterOuterAlt(_localctx, 2);
47061 				{
47062 				setState(6569);
47063 				match(CONTROL);
47064 				}
47065 				break;
47066 			case 3:
47067 				enterOuterAlt(_localctx, 3);
47068 				{
47069 				setState(6570);
47070 				match(REFERENCES);
47071 				}
47072 				break;
47073 			case 4:
47074 				enterOuterAlt(_localctx, 4);
47075 				{
47076 				setState(6571);
47077 				match(TAKE);
47078 				setState(6572);
47079 				match(OWNERSHIP);
47080 				}
47081 				break;
47082 			case 5:
47083 				enterOuterAlt(_localctx, 5);
47084 				{
47085 				setState(6573);
47086 				match(VIEW);
47087 				setState(6574);
47088 				match(DEFINITION);
47089 				}
47090 				break;
47091 			case 6:
47092 				enterOuterAlt(_localctx, 6);
47093 				{
47094 				setState(6575);
47095 				match(ALTER);
47096 				setState(6576);
47097 				match(ANY);
47098 				setState(6577);
47099 				match(FULLTEXT);
47100 				setState(6578);
47101 				match(CATALOG);
47102 				}
47103 				break;
47104 			}
47105 		}
47106 		catch (RecognitionException re) {
47107 			_localctx.exception = re;
47108 			_errHandler.reportError(this, re);
47109 			_errHandler.recover(this, re);
47110 		}
47111 		finally {
47112 			exitRule();
47113 		}
47114 		return _localctx;
47115 	}
47116 
47117 	public static class TypePermissionContext extends ParserRuleContext {
47118 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47119 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47120 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47121 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47122 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47123 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47124 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47125 		public TypePermissionContext(ParserRuleContext parent, int invokingState) {
47126 			super(parent, invokingState);
47127 		}
47128 		@Override public int getRuleIndex() { return RULE_typePermission; }
47129 		@Override
47130 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47131 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTypePermission(this);
47132 			else return visitor.visitChildren(this);
47133 		}
47134 	}
47135 
47136 	public final TypePermissionContext typePermission() throws RecognitionException {
47137 		TypePermissionContext _localctx = new TypePermissionContext(_ctx, getState());
47138 		enterRule(_localctx, 900, RULE_typePermission);
47139 		try {
47140 			setState(6588);
47141 			_errHandler.sync(this);
47142 			switch (_input.LA(1)) {
47143 			case CONTROL:
47144 				enterOuterAlt(_localctx, 1);
47145 				{
47146 				setState(6581);
47147 				match(CONTROL);
47148 				}
47149 				break;
47150 			case EXECUTE:
47151 				enterOuterAlt(_localctx, 2);
47152 				{
47153 				setState(6582);
47154 				match(EXECUTE);
47155 				}
47156 				break;
47157 			case REFERENCES:
47158 				enterOuterAlt(_localctx, 3);
47159 				{
47160 				setState(6583);
47161 				match(REFERENCES);
47162 				}
47163 				break;
47164 			case TAKE:
47165 				enterOuterAlt(_localctx, 4);
47166 				{
47167 				setState(6584);
47168 				match(TAKE);
47169 				setState(6585);
47170 				match(OWNERSHIP);
47171 				}
47172 				break;
47173 			case VIEW:
47174 				enterOuterAlt(_localctx, 5);
47175 				{
47176 				setState(6586);
47177 				match(VIEW);
47178 				setState(6587);
47179 				match(DEFINITION);
47180 				}
47181 				break;
47182 			default:
47183 				throw new NoViableAltException(this);
47184 			}
47185 		}
47186 		catch (RecognitionException re) {
47187 			_localctx.exception = re;
47188 			_errHandler.reportError(this, re);
47189 			_errHandler.recover(this, re);
47190 		}
47191 		finally {
47192 			exitRule();
47193 		}
47194 		return _localctx;
47195 	}
47196 
47197 	public static class XmlSchemaCollectionPermissionContext extends ParserRuleContext {
47198 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
47199 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47200 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47201 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47202 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47203 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47204 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47205 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47206 		public XmlSchemaCollectionPermissionContext(ParserRuleContext parent, int invokingState) {
47207 			super(parent, invokingState);
47208 		}
47209 		@Override public int getRuleIndex() { return RULE_xmlSchemaCollectionPermission; }
47210 		@Override
47211 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47212 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlSchemaCollectionPermission(this);
47213 			else return visitor.visitChildren(this);
47214 		}
47215 	}
47216 
47217 	public final XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() throws RecognitionException {
47218 		XmlSchemaCollectionPermissionContext _localctx = new XmlSchemaCollectionPermissionContext(_ctx, getState());
47219 		enterRule(_localctx, 902, RULE_xmlSchemaCollectionPermission);
47220 		try {
47221 			setState(6598);
47222 			_errHandler.sync(this);
47223 			switch (_input.LA(1)) {
47224 			case ALTER:
47225 				enterOuterAlt(_localctx, 1);
47226 				{
47227 				setState(6590);
47228 				match(ALTER);
47229 				}
47230 				break;
47231 			case CONTROL:
47232 				enterOuterAlt(_localctx, 2);
47233 				{
47234 				setState(6591);
47235 				match(CONTROL);
47236 				}
47237 				break;
47238 			case EXECUTE:
47239 				enterOuterAlt(_localctx, 3);
47240 				{
47241 				setState(6592);
47242 				match(EXECUTE);
47243 				}
47244 				break;
47245 			case REFERENCES:
47246 				enterOuterAlt(_localctx, 4);
47247 				{
47248 				setState(6593);
47249 				match(REFERENCES);
47250 				}
47251 				break;
47252 			case TAKE:
47253 				enterOuterAlt(_localctx, 5);
47254 				{
47255 				setState(6594);
47256 				match(TAKE);
47257 				setState(6595);
47258 				match(OWNERSHIP);
47259 				}
47260 				break;
47261 			case VIEW:
47262 				enterOuterAlt(_localctx, 6);
47263 				{
47264 				setState(6596);
47265 				match(VIEW);
47266 				setState(6597);
47267 				match(DEFINITION);
47268 				}
47269 				break;
47270 			default:
47271 				throw new NoViableAltException(this);
47272 			}
47273 		}
47274 		catch (RecognitionException re) {
47275 			_localctx.exception = re;
47276 			_errHandler.reportError(this, re);
47277 			_errHandler.recover(this, re);
47278 		}
47279 		finally {
47280 			exitRule();
47281 		}
47282 		return _localctx;
47283 	}
47284 
47285 	public static class SystemObjectPermissionContext extends ParserRuleContext {
47286 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
47287 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47288 		public SystemObjectPermissionContext(ParserRuleContext parent, int invokingState) {
47289 			super(parent, invokingState);
47290 		}
47291 		@Override public int getRuleIndex() { return RULE_systemObjectPermission; }
47292 		@Override
47293 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47294 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSystemObjectPermission(this);
47295 			else return visitor.visitChildren(this);
47296 		}
47297 	}
47298 
47299 	public final SystemObjectPermissionContext systemObjectPermission() throws RecognitionException {
47300 		SystemObjectPermissionContext _localctx = new SystemObjectPermissionContext(_ctx, getState());
47301 		enterRule(_localctx, 904, RULE_systemObjectPermission);
47302 		int _la;
47303 		try {
47304 			enterOuterAlt(_localctx, 1);
47305 			{
47306 			setState(6600);
47307 			_la = _input.LA(1);
47308 			if ( !(_la==SELECT || _la==EXECUTE) ) {
47309 			_errHandler.recoverInline(this);
47310 			}
47311 			else {
47312 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47313 				_errHandler.reportMatch(this);
47314 				consume();
47315 			}
47316 			}
47317 		}
47318 		catch (RecognitionException re) {
47319 			_localctx.exception = re;
47320 			_errHandler.reportError(this, re);
47321 			_errHandler.recover(this, re);
47322 		}
47323 		finally {
47324 			exitRule();
47325 		}
47326 		return _localctx;
47327 	}
47328 
47329 	public static class Class_Context extends ParserRuleContext {
47330 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
47331 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
47332 		public TerminalNode COLON_(int i) {
47333 			return getToken(SQLServerStatementParser.COLON_, i);
47334 		}
47335 		public Class_Context(ParserRuleContext parent, int invokingState) {
47336 			super(parent, invokingState);
47337 		}
47338 		@Override public int getRuleIndex() { return RULE_class_; }
47339 		@Override
47340 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47341 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClass_(this);
47342 			else return visitor.visitChildren(this);
47343 		}
47344 	}
47345 
47346 	public final Class_Context class_() throws RecognitionException {
47347 		Class_Context _localctx = new Class_Context(_ctx, getState());
47348 		enterRule(_localctx, 906, RULE_class_);
47349 		try {
47350 			enterOuterAlt(_localctx, 1);
47351 			{
47352 			setState(6602);
47353 			match(IDENTIFIER_);
47354 			setState(6603);
47355 			match(COLON_);
47356 			setState(6604);
47357 			match(COLON_);
47358 			}
47359 		}
47360 		catch (RecognitionException re) {
47361 			_localctx.exception = re;
47362 			_errHandler.reportError(this, re);
47363 			_errHandler.recover(this, re);
47364 		}
47365 		finally {
47366 			exitRule();
47367 		}
47368 		return _localctx;
47369 	}
47370 
47371 	public static class ClassItemContext extends ParserRuleContext {
47372 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
47373 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
47374 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
47375 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
47376 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
47377 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
47378 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
47379 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
47380 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
47381 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
47382 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
47383 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
47384 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
47385 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
47386 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
47387 		public TerminalNode STOPLIST() { return getToken(SQLServerStatementParser.STOPLIST, 0); }
47388 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
47389 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
47390 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
47391 		public TerminalNode PROPERTY() { return getToken(SQLServerStatementParser.PROPERTY, 0); }
47392 		public TerminalNode LIST() { return getToken(SQLServerStatementParser.LIST, 0); }
47393 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47394 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
47395 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
47396 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
47397 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
47398 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
47399 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
47400 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
47401 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
47402 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
47403 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
47404 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47405 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
47406 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
47407 		public ClassItemContext(ParserRuleContext parent, int invokingState) {
47408 			super(parent, invokingState);
47409 		}
47410 		@Override public int getRuleIndex() { return RULE_classItem; }
47411 		@Override
47412 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47413 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassItem(this);
47414 			else return visitor.visitChildren(this);
47415 		}
47416 	}
47417 
47418 	public final ClassItemContext classItem() throws RecognitionException {
47419 		ClassItemContext _localctx = new ClassItemContext(_ctx, getState());
47420 		enterRule(_localctx, 908, RULE_classItem);
47421 		int _la;
47422 		try {
47423 			setState(6646);
47424 			_errHandler.sync(this);
47425 			switch (_input.LA(1)) {
47426 			case ASSEMBLY:
47427 				enterOuterAlt(_localctx, 1);
47428 				{
47429 				setState(6606);
47430 				match(ASSEMBLY);
47431 				}
47432 				break;
47433 			case ASYMMETRIC:
47434 				enterOuterAlt(_localctx, 2);
47435 				{
47436 				setState(6607);
47437 				match(ASYMMETRIC);
47438 				setState(6608);
47439 				match(KEY);
47440 				}
47441 				break;
47442 			case AVAILABILITY:
47443 				enterOuterAlt(_localctx, 3);
47444 				{
47445 				setState(6609);
47446 				match(AVAILABILITY);
47447 				setState(6610);
47448 				match(GROUP);
47449 				}
47450 				break;
47451 			case CERTIFICATE:
47452 				enterOuterAlt(_localctx, 4);
47453 				{
47454 				setState(6611);
47455 				match(CERTIFICATE);
47456 				}
47457 				break;
47458 			case USER:
47459 				enterOuterAlt(_localctx, 5);
47460 				{
47461 				setState(6612);
47462 				match(USER);
47463 				}
47464 				break;
47465 			case ROLE:
47466 				enterOuterAlt(_localctx, 6);
47467 				{
47468 				setState(6613);
47469 				match(ROLE);
47470 				}
47471 				break;
47472 			case APPLICATION:
47473 				enterOuterAlt(_localctx, 7);
47474 				{
47475 				setState(6614);
47476 				match(APPLICATION);
47477 				setState(6615);
47478 				match(ROLE);
47479 				}
47480 				break;
47481 			case DATABASE:
47482 				enterOuterAlt(_localctx, 8);
47483 				{
47484 				setState(6616);
47485 				match(DATABASE);
47486 				setState(6617);
47487 				match(SCOPED);
47488 				setState(6618);
47489 				match(CREDENTIAL);
47490 				}
47491 				break;
47492 			case ENDPOINT:
47493 				enterOuterAlt(_localctx, 9);
47494 				{
47495 				setState(6619);
47496 				match(ENDPOINT);
47497 				}
47498 				break;
47499 			case FULLTEXT:
47500 				enterOuterAlt(_localctx, 10);
47501 				{
47502 				setState(6620);
47503 				match(FULLTEXT);
47504 				setState(6621);
47505 				_la = _input.LA(1);
47506 				if ( !(_la==CATALOG || _la==STOPLIST) ) {
47507 				_errHandler.recoverInline(this);
47508 				}
47509 				else {
47510 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47511 					_errHandler.reportMatch(this);
47512 					consume();
47513 				}
47514 				}
47515 				break;
47516 			case OBJECT:
47517 				enterOuterAlt(_localctx, 11);
47518 				{
47519 				setState(6622);
47520 				match(OBJECT);
47521 				}
47522 				break;
47523 			case SCHEMA:
47524 				enterOuterAlt(_localctx, 12);
47525 				{
47526 				setState(6623);
47527 				match(SCHEMA);
47528 				}
47529 				break;
47530 			case SEARCH:
47531 				enterOuterAlt(_localctx, 13);
47532 				{
47533 				setState(6624);
47534 				match(SEARCH);
47535 				setState(6625);
47536 				match(PROPERTY);
47537 				setState(6626);
47538 				match(LIST);
47539 				}
47540 				break;
47541 			case LOGIN:
47542 				enterOuterAlt(_localctx, 14);
47543 				{
47544 				setState(6627);
47545 				match(LOGIN);
47546 				}
47547 				break;
47548 			case SERVER:
47549 				enterOuterAlt(_localctx, 15);
47550 				{
47551 				setState(6628);
47552 				match(SERVER);
47553 				setState(6629);
47554 				match(ROLE);
47555 				}
47556 				break;
47557 			case CONTRACT:
47558 				enterOuterAlt(_localctx, 16);
47559 				{
47560 				setState(6630);
47561 				match(CONTRACT);
47562 				}
47563 				break;
47564 			case MESSAGE:
47565 				enterOuterAlt(_localctx, 17);
47566 				{
47567 				setState(6631);
47568 				match(MESSAGE);
47569 				setState(6632);
47570 				match(TYPE);
47571 				}
47572 				break;
47573 			case REMOTE:
47574 				enterOuterAlt(_localctx, 18);
47575 				{
47576 				setState(6633);
47577 				match(REMOTE);
47578 				setState(6634);
47579 				match(SERVICE);
47580 				setState(6635);
47581 				match(BINDING);
47582 				}
47583 				break;
47584 			case ROUTE:
47585 				enterOuterAlt(_localctx, 19);
47586 				{
47587 				setState(6636);
47588 				match(ROUTE);
47589 				}
47590 				break;
47591 			case SERVICE:
47592 				enterOuterAlt(_localctx, 20);
47593 				{
47594 				setState(6637);
47595 				match(SERVICE);
47596 				}
47597 				break;
47598 			case SYMMETRIC:
47599 				enterOuterAlt(_localctx, 21);
47600 				{
47601 				setState(6638);
47602 				match(SYMMETRIC);
47603 				setState(6639);
47604 				match(KEY);
47605 				}
47606 				break;
47607 			case SELECT:
47608 				enterOuterAlt(_localctx, 22);
47609 				{
47610 				setState(6640);
47611 				match(SELECT);
47612 				}
47613 				break;
47614 			case EXECUTE:
47615 				enterOuterAlt(_localctx, 23);
47616 				{
47617 				setState(6641);
47618 				match(EXECUTE);
47619 				}
47620 				break;
47621 			case TYPE:
47622 				enterOuterAlt(_localctx, 24);
47623 				{
47624 				setState(6642);
47625 				match(TYPE);
47626 				}
47627 				break;
47628 			case XML:
47629 				enterOuterAlt(_localctx, 25);
47630 				{
47631 				setState(6643);
47632 				match(XML);
47633 				setState(6644);
47634 				match(SCHEMA);
47635 				setState(6645);
47636 				match(COLLECTION);
47637 				}
47638 				break;
47639 			default:
47640 				throw new NoViableAltException(this);
47641 			}
47642 		}
47643 		catch (RecognitionException re) {
47644 			_localctx.exception = re;
47645 			_errHandler.reportError(this, re);
47646 			_errHandler.recover(this, re);
47647 		}
47648 		finally {
47649 			exitRule();
47650 		}
47651 		return _localctx;
47652 	}
47653 
47654 	public static class ClassTypeContext extends ParserRuleContext {
47655 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47656 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
47657 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
47658 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
47659 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
47660 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
47661 		public ClassTypeContext(ParserRuleContext parent, int invokingState) {
47662 			super(parent, invokingState);
47663 		}
47664 		@Override public int getRuleIndex() { return RULE_classType; }
47665 		@Override
47666 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47667 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassType(this);
47668 			else return visitor.visitChildren(this);
47669 		}
47670 	}
47671 
47672 	public final ClassTypeContext classType() throws RecognitionException {
47673 		ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
47674 		enterRule(_localctx, 910, RULE_classType);
47675 		int _la;
47676 		try {
47677 			enterOuterAlt(_localctx, 1);
47678 			{
47679 			setState(6648);
47680 			_la = _input.LA(1);
47681 			if ( !(_la==SCHEMA || ((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (DATABASE - 204)) | (1L << (USER - 204)) | (1L << (ROLE - 204)))) != 0) || _la==LOGIN || _la==OBJECT) ) {
47682 			_errHandler.recoverInline(this);
47683 			}
47684 			else {
47685 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47686 				_errHandler.reportMatch(this);
47687 				consume();
47688 			}
47689 			}
47690 		}
47691 		catch (RecognitionException re) {
47692 			_localctx.exception = re;
47693 			_errHandler.reportError(this, re);
47694 			_errHandler.recover(this, re);
47695 		}
47696 		finally {
47697 			exitRule();
47698 		}
47699 		return _localctx;
47700 	}
47701 
47702 	public static class RoleClauseContext extends ParserRuleContext {
47703 		public IgnoredIdentifiersContext ignoredIdentifiers() {
47704 			return getRuleContext(IgnoredIdentifiersContext.class,0);
47705 		}
47706 		public RoleClauseContext(ParserRuleContext parent, int invokingState) {
47707 			super(parent, invokingState);
47708 		}
47709 		@Override public int getRuleIndex() { return RULE_roleClause; }
47710 		@Override
47711 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47712 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRoleClause(this);
47713 			else return visitor.visitChildren(this);
47714 		}
47715 	}
47716 
47717 	public final RoleClauseContext roleClause() throws RecognitionException {
47718 		RoleClauseContext _localctx = new RoleClauseContext(_ctx, getState());
47719 		enterRule(_localctx, 912, RULE_roleClause);
47720 		try {
47721 			enterOuterAlt(_localctx, 1);
47722 			{
47723 			setState(6650);
47724 			ignoredIdentifiers();
47725 			}
47726 		}
47727 		catch (RecognitionException re) {
47728 			_localctx.exception = re;
47729 			_errHandler.reportError(this, re);
47730 			_errHandler.recover(this, re);
47731 		}
47732 		finally {
47733 			exitRule();
47734 		}
47735 		return _localctx;
47736 	}
47737 
47738 	public static class SetUserContext extends ParserRuleContext {
47739 		public TerminalNode SETUSER() { return getToken(SQLServerStatementParser.SETUSER, 0); }
47740 		public StringLiteralsContext stringLiterals() {
47741 			return getRuleContext(StringLiteralsContext.class,0);
47742 		}
47743 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47744 		public TerminalNode NORESET() { return getToken(SQLServerStatementParser.NORESET, 0); }
47745 		public SetUserContext(ParserRuleContext parent, int invokingState) {
47746 			super(parent, invokingState);
47747 		}
47748 		@Override public int getRuleIndex() { return RULE_setUser; }
47749 		@Override
47750 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47751 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetUser(this);
47752 			else return visitor.visitChildren(this);
47753 		}
47754 	}
47755 
47756 	public final SetUserContext setUser() throws RecognitionException {
47757 		SetUserContext _localctx = new SetUserContext(_ctx, getState());
47758 		enterRule(_localctx, 914, RULE_setUser);
47759 		int _la;
47760 		try {
47761 			enterOuterAlt(_localctx, 1);
47762 			{
47763 			setState(6652);
47764 			match(SETUSER);
47765 			setState(6658);
47766 			_errHandler.sync(this);
47767 			_la = _input.LA(1);
47768 			if (_la==STRING_ || _la==NCHAR_TEXT) {
47769 				{
47770 				setState(6653);
47771 				stringLiterals();
47772 				setState(6656);
47773 				_errHandler.sync(this);
47774 				_la = _input.LA(1);
47775 				if (_la==WITH) {
47776 					{
47777 					setState(6654);
47778 					match(WITH);
47779 					setState(6655);
47780 					match(NORESET);
47781 					}
47782 				}
47783 
47784 				}
47785 			}
47786 
47787 			}
47788 		}
47789 		catch (RecognitionException re) {
47790 			_localctx.exception = re;
47791 			_errHandler.reportError(this, re);
47792 			_errHandler.recover(this, re);
47793 		}
47794 		finally {
47795 			exitRule();
47796 		}
47797 		return _localctx;
47798 	}
47799 
47800 	public static class CreateUserContext extends ParserRuleContext {
47801 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
47802 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
47803 		public CreateUserLoginClauseContext createUserLoginClause() {
47804 			return getRuleContext(CreateUserLoginClauseContext.class,0);
47805 		}
47806 		public CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() {
47807 			return getRuleContext(CreateUserWindowsPrincipalClauseContext.class,0);
47808 		}
47809 		public CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() {
47810 			return getRuleContext(CreateUserLoginWindowsPrincipalClauseContext.class,0);
47811 		}
47812 		public CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() {
47813 			return getRuleContext(CreateUserWithoutLoginClauseContext.class,0);
47814 		}
47815 		public CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() {
47816 			return getRuleContext(CreateUserFromExternalProviderClauseContext.class,0);
47817 		}
47818 		public CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() {
47819 			return getRuleContext(CreateUserWithDefaultSchemaContext.class,0);
47820 		}
47821 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() {
47822 			return getRuleContext(CreateUserWithAzureActiveDirectoryPrincipalClauseContext.class,0);
47823 		}
47824 		public UserNameContext userName() {
47825 			return getRuleContext(UserNameContext.class,0);
47826 		}
47827 		public CreateUserContext(ParserRuleContext parent, int invokingState) {
47828 			super(parent, invokingState);
47829 		}
47830 		@Override public int getRuleIndex() { return RULE_createUser; }
47831 		@Override
47832 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47833 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUser(this);
47834 			else return visitor.visitChildren(this);
47835 		}
47836 	}
47837 
47838 	public final CreateUserContext createUser() throws RecognitionException {
47839 		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
47840 		enterRule(_localctx, 916, RULE_createUser);
47841 		try {
47842 			enterOuterAlt(_localctx, 1);
47843 			{
47844 			setState(6660);
47845 			match(CREATE);
47846 			setState(6661);
47847 			match(USER);
47848 			setState(6670);
47849 			_errHandler.sync(this);
47850 			switch ( getInterpreter().adaptivePredict(_input,764,_ctx) ) {
47851 			case 1:
47852 				{
47853 				setState(6662);
47854 				createUserLoginClause();
47855 				}
47856 				break;
47857 			case 2:
47858 				{
47859 				setState(6663);
47860 				createUserWindowsPrincipalClause();
47861 				}
47862 				break;
47863 			case 3:
47864 				{
47865 				setState(6664);
47866 				createUserLoginWindowsPrincipalClause();
47867 				}
47868 				break;
47869 			case 4:
47870 				{
47871 				setState(6665);
47872 				createUserWithoutLoginClause();
47873 				}
47874 				break;
47875 			case 5:
47876 				{
47877 				setState(6666);
47878 				createUserFromExternalProviderClause();
47879 				}
47880 				break;
47881 			case 6:
47882 				{
47883 				setState(6667);
47884 				createUserWithDefaultSchema();
47885 				}
47886 				break;
47887 			case 7:
47888 				{
47889 				setState(6668);
47890 				createUserWithAzureActiveDirectoryPrincipalClause();
47891 				}
47892 				break;
47893 			case 8:
47894 				{
47895 				setState(6669);
47896 				userName();
47897 				}
47898 				break;
47899 			}
47900 			}
47901 		}
47902 		catch (RecognitionException re) {
47903 			_localctx.exception = re;
47904 			_errHandler.reportError(this, re);
47905 			_errHandler.recover(this, re);
47906 		}
47907 		finally {
47908 			exitRule();
47909 		}
47910 		return _localctx;
47911 	}
47912 
47913 	public static class CreateUserLoginClauseContext extends ParserRuleContext {
47914 		public UserNameContext userName() {
47915 			return getRuleContext(UserNameContext.class,0);
47916 		}
47917 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47918 		public IdentifierContext identifier() {
47919 			return getRuleContext(IdentifierContext.class,0);
47920 		}
47921 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47922 		public List<LimitedOptionsListContext> limitedOptionsList() {
47923 			return getRuleContexts(LimitedOptionsListContext.class);
47924 		}
47925 		public LimitedOptionsListContext limitedOptionsList(int i) {
47926 			return getRuleContext(LimitedOptionsListContext.class,i);
47927 		}
47928 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47929 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47930 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47931 		public TerminalNode COMMA_(int i) {
47932 			return getToken(SQLServerStatementParser.COMMA_, i);
47933 		}
47934 		public CreateUserLoginClauseContext(ParserRuleContext parent, int invokingState) {
47935 			super(parent, invokingState);
47936 		}
47937 		@Override public int getRuleIndex() { return RULE_createUserLoginClause; }
47938 		@Override
47939 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47940 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginClause(this);
47941 			else return visitor.visitChildren(this);
47942 		}
47943 	}
47944 
47945 	public final CreateUserLoginClauseContext createUserLoginClause() throws RecognitionException {
47946 		CreateUserLoginClauseContext _localctx = new CreateUserLoginClauseContext(_ctx, getState());
47947 		enterRule(_localctx, 918, RULE_createUserLoginClause);
47948 		int _la;
47949 		try {
47950 			enterOuterAlt(_localctx, 1);
47951 			{
47952 			setState(6672);
47953 			userName();
47954 			setState(6676);
47955 			_errHandler.sync(this);
47956 			_la = _input.LA(1);
47957 			if (_la==FROM || _la==FOR) {
47958 				{
47959 				setState(6673);
47960 				_la = _input.LA(1);
47961 				if ( !(_la==FROM || _la==FOR) ) {
47962 				_errHandler.recoverInline(this);
47963 				}
47964 				else {
47965 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47966 					_errHandler.reportMatch(this);
47967 					consume();
47968 				}
47969 				setState(6674);
47970 				match(LOGIN);
47971 				setState(6675);
47972 				identifier();
47973 				}
47974 			}
47975 
47976 			setState(6687);
47977 			_errHandler.sync(this);
47978 			_la = _input.LA(1);
47979 			if (_la==WITH) {
47980 				{
47981 				setState(6678);
47982 				match(WITH);
47983 				setState(6679);
47984 				limitedOptionsList();
47985 				setState(6684);
47986 				_errHandler.sync(this);
47987 				_la = _input.LA(1);
47988 				while (_la==COMMA_) {
47989 					{
47990 					{
47991 					setState(6680);
47992 					match(COMMA_);
47993 					setState(6681);
47994 					limitedOptionsList();
47995 					}
47996 					}
47997 					setState(6686);
47998 					_errHandler.sync(this);
47999 					_la = _input.LA(1);
48000 				}
48001 				}
48002 			}
48003 
48004 			}
48005 		}
48006 		catch (RecognitionException re) {
48007 			_localctx.exception = re;
48008 			_errHandler.reportError(this, re);
48009 			_errHandler.recover(this, re);
48010 		}
48011 		finally {
48012 			exitRule();
48013 		}
48014 		return _localctx;
48015 	}
48016 
48017 	public static class CreateUserWindowsPrincipalClauseContext extends ParserRuleContext {
48018 		public WindowsPrincipalContext windowsPrincipal() {
48019 			return getRuleContext(WindowsPrincipalContext.class,0);
48020 		}
48021 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48022 		public List<OptionsListContext> optionsList() {
48023 			return getRuleContexts(OptionsListContext.class);
48024 		}
48025 		public OptionsListContext optionsList(int i) {
48026 			return getRuleContext(OptionsListContext.class,i);
48027 		}
48028 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48029 		public TerminalNode COMMA_(int i) {
48030 			return getToken(SQLServerStatementParser.COMMA_, i);
48031 		}
48032 		public UserNameContext userName() {
48033 			return getRuleContext(UserNameContext.class,0);
48034 		}
48035 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
48036 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48037 		public StringLiteralsContext stringLiterals() {
48038 			return getRuleContext(StringLiteralsContext.class,0);
48039 		}
48040 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
48041 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
48042 		}
48043 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48044 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
48045 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
48046 		public CreateUserWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
48047 			super(parent, invokingState);
48048 		}
48049 		@Override public int getRuleIndex() { return RULE_createUserWindowsPrincipalClause; }
48050 		@Override
48051 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48052 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWindowsPrincipalClause(this);
48053 			else return visitor.visitChildren(this);
48054 		}
48055 	}
48056 
48057 	public final CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() throws RecognitionException {
48058 		CreateUserWindowsPrincipalClauseContext _localctx = new CreateUserWindowsPrincipalClauseContext(_ctx, getState());
48059 		enterRule(_localctx, 920, RULE_createUserWindowsPrincipalClause);
48060 		int _la;
48061 		try {
48062 			setState(6722);
48063 			_errHandler.sync(this);
48064 			switch ( getInterpreter().adaptivePredict(_input,772,_ctx) ) {
48065 			case 1:
48066 				enterOuterAlt(_localctx, 1);
48067 				{
48068 				setState(6689);
48069 				windowsPrincipal();
48070 				setState(6699);
48071 				_errHandler.sync(this);
48072 				_la = _input.LA(1);
48073 				if (_la==WITH) {
48074 					{
48075 					setState(6690);
48076 					match(WITH);
48077 					setState(6691);
48078 					optionsList();
48079 					setState(6696);
48080 					_errHandler.sync(this);
48081 					_la = _input.LA(1);
48082 					while (_la==COMMA_) {
48083 						{
48084 						{
48085 						setState(6692);
48086 						match(COMMA_);
48087 						setState(6693);
48088 						optionsList();
48089 						}
48090 						}
48091 						setState(6698);
48092 						_errHandler.sync(this);
48093 						_la = _input.LA(1);
48094 					}
48095 					}
48096 				}
48097 
48098 				}
48099 				break;
48100 			case 2:
48101 				enterOuterAlt(_localctx, 2);
48102 				{
48103 				setState(6701);
48104 				userName();
48105 				setState(6702);
48106 				match(WITH);
48107 				setState(6703);
48108 				match(PASSWORD);
48109 				setState(6704);
48110 				match(EQ_);
48111 				setState(6705);
48112 				stringLiterals();
48113 				setState(6715);
48114 				_errHandler.sync(this);
48115 				_la = _input.LA(1);
48116 				if (_la==COMMA_) {
48117 					{
48118 					setState(6706);
48119 					match(COMMA_);
48120 					setState(6707);
48121 					optionsList();
48122 					setState(6712);
48123 					_errHandler.sync(this);
48124 					_la = _input.LA(1);
48125 					while (_la==COMMA_) {
48126 						{
48127 						{
48128 						setState(6708);
48129 						match(COMMA_);
48130 						setState(6709);
48131 						optionsList();
48132 						}
48133 						}
48134 						setState(6714);
48135 						_errHandler.sync(this);
48136 						_la = _input.LA(1);
48137 					}
48138 					}
48139 				}
48140 
48141 				}
48142 				break;
48143 			case 3:
48144 				enterOuterAlt(_localctx, 3);
48145 				{
48146 				setState(6717);
48147 				azureActiveDirectoryPrincipal();
48148 				setState(6718);
48149 				match(FROM);
48150 				setState(6719);
48151 				match(EXTERNAL);
48152 				setState(6720);
48153 				match(PROVIDER);
48154 				}
48155 				break;
48156 			}
48157 		}
48158 		catch (RecognitionException re) {
48159 			_localctx.exception = re;
48160 			_errHandler.reportError(this, re);
48161 			_errHandler.recover(this, re);
48162 		}
48163 		finally {
48164 			exitRule();
48165 		}
48166 		return _localctx;
48167 	}
48168 
48169 	public static class CreateUserLoginWindowsPrincipalClauseContext extends ParserRuleContext {
48170 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48171 		public List<LimitedOptionsListContext> limitedOptionsList() {
48172 			return getRuleContexts(LimitedOptionsListContext.class);
48173 		}
48174 		public LimitedOptionsListContext limitedOptionsList(int i) {
48175 			return getRuleContext(LimitedOptionsListContext.class,i);
48176 		}
48177 		public List<WindowsPrincipalContext> windowsPrincipal() {
48178 			return getRuleContexts(WindowsPrincipalContext.class);
48179 		}
48180 		public WindowsPrincipalContext windowsPrincipal(int i) {
48181 			return getRuleContext(WindowsPrincipalContext.class,i);
48182 		}
48183 		public UserNameContext userName() {
48184 			return getRuleContext(UserNameContext.class,0);
48185 		}
48186 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48187 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48188 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48189 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48190 		public TerminalNode COMMA_(int i) {
48191 			return getToken(SQLServerStatementParser.COMMA_, i);
48192 		}
48193 		public CreateUserLoginWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
48194 			super(parent, invokingState);
48195 		}
48196 		@Override public int getRuleIndex() { return RULE_createUserLoginWindowsPrincipalClause; }
48197 		@Override
48198 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48199 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginWindowsPrincipalClause(this);
48200 			else return visitor.visitChildren(this);
48201 		}
48202 	}
48203 
48204 	public final CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() throws RecognitionException {
48205 		CreateUserLoginWindowsPrincipalClauseContext _localctx = new CreateUserLoginWindowsPrincipalClauseContext(_ctx, getState());
48206 		enterRule(_localctx, 922, RULE_createUserLoginWindowsPrincipalClause);
48207 		int _la;
48208 		try {
48209 			enterOuterAlt(_localctx, 1);
48210 			{
48211 			setState(6735);
48212 			_errHandler.sync(this);
48213 			switch ( getInterpreter().adaptivePredict(_input,774,_ctx) ) {
48214 			case 1:
48215 				{
48216 				{
48217 				setState(6724);
48218 				windowsPrincipal();
48219 				setState(6728);
48220 				_errHandler.sync(this);
48221 				_la = _input.LA(1);
48222 				if (_la==FROM || _la==FOR) {
48223 					{
48224 					setState(6725);
48225 					_la = _input.LA(1);
48226 					if ( !(_la==FROM || _la==FOR) ) {
48227 					_errHandler.recoverInline(this);
48228 					}
48229 					else {
48230 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48231 						_errHandler.reportMatch(this);
48232 						consume();
48233 					}
48234 					setState(6726);
48235 					match(LOGIN);
48236 					setState(6727);
48237 					windowsPrincipal();
48238 					}
48239 				}
48240 
48241 				}
48242 				}
48243 				break;
48244 			case 2:
48245 				{
48246 				{
48247 				setState(6730);
48248 				userName();
48249 				setState(6731);
48250 				_la = _input.LA(1);
48251 				if ( !(_la==FROM || _la==FOR) ) {
48252 				_errHandler.recoverInline(this);
48253 				}
48254 				else {
48255 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48256 					_errHandler.reportMatch(this);
48257 					consume();
48258 				}
48259 				setState(6732);
48260 				match(LOGIN);
48261 				setState(6733);
48262 				windowsPrincipal();
48263 				}
48264 				}
48265 				break;
48266 			}
48267 			setState(6746);
48268 			_errHandler.sync(this);
48269 			_la = _input.LA(1);
48270 			if (_la==WITH) {
48271 				{
48272 				setState(6737);
48273 				match(WITH);
48274 				setState(6738);
48275 				limitedOptionsList();
48276 				setState(6743);
48277 				_errHandler.sync(this);
48278 				_la = _input.LA(1);
48279 				while (_la==COMMA_) {
48280 					{
48281 					{
48282 					setState(6739);
48283 					match(COMMA_);
48284 					setState(6740);
48285 					limitedOptionsList();
48286 					}
48287 					}
48288 					setState(6745);
48289 					_errHandler.sync(this);
48290 					_la = _input.LA(1);
48291 				}
48292 				}
48293 			}
48294 
48295 			}
48296 		}
48297 		catch (RecognitionException re) {
48298 			_localctx.exception = re;
48299 			_errHandler.reportError(this, re);
48300 			_errHandler.recover(this, re);
48301 		}
48302 		finally {
48303 			exitRule();
48304 		}
48305 		return _localctx;
48306 	}
48307 
48308 	public static class CreateUserWithoutLoginClauseContext extends ParserRuleContext {
48309 		public UserNameContext userName() {
48310 			return getRuleContext(UserNameContext.class,0);
48311 		}
48312 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
48313 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48314 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
48315 		public IdentifierContext identifier() {
48316 			return getRuleContext(IdentifierContext.class,0);
48317 		}
48318 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
48319 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
48320 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48321 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48322 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48323 		public List<LimitedOptionsListContext> limitedOptionsList() {
48324 			return getRuleContexts(LimitedOptionsListContext.class);
48325 		}
48326 		public LimitedOptionsListContext limitedOptionsList(int i) {
48327 			return getRuleContext(LimitedOptionsListContext.class,i);
48328 		}
48329 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48330 		public TerminalNode COMMA_(int i) {
48331 			return getToken(SQLServerStatementParser.COMMA_, i);
48332 		}
48333 		public CreateUserWithoutLoginClauseContext(ParserRuleContext parent, int invokingState) {
48334 			super(parent, invokingState);
48335 		}
48336 		@Override public int getRuleIndex() { return RULE_createUserWithoutLoginClause; }
48337 		@Override
48338 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48339 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithoutLoginClause(this);
48340 			else return visitor.visitChildren(this);
48341 		}
48342 	}
48343 
48344 	public final CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() throws RecognitionException {
48345 		CreateUserWithoutLoginClauseContext _localctx = new CreateUserWithoutLoginClauseContext(_ctx, getState());
48346 		enterRule(_localctx, 924, RULE_createUserWithoutLoginClause);
48347 		int _la;
48348 		try {
48349 			enterOuterAlt(_localctx, 1);
48350 			{
48351 			setState(6748);
48352 			userName();
48353 			setState(6769);
48354 			_errHandler.sync(this);
48355 			switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) {
48356 			case 1:
48357 				{
48358 				setState(6749);
48359 				match(WITHOUT);
48360 				setState(6750);
48361 				match(LOGIN);
48362 				setState(6760);
48363 				_errHandler.sync(this);
48364 				_la = _input.LA(1);
48365 				if (_la==WITH) {
48366 					{
48367 					setState(6751);
48368 					match(WITH);
48369 					setState(6752);
48370 					limitedOptionsList();
48371 					setState(6757);
48372 					_errHandler.sync(this);
48373 					_la = _input.LA(1);
48374 					while (_la==COMMA_) {
48375 						{
48376 						{
48377 						setState(6753);
48378 						match(COMMA_);
48379 						setState(6754);
48380 						limitedOptionsList();
48381 						}
48382 						}
48383 						setState(6759);
48384 						_errHandler.sync(this);
48385 						_la = _input.LA(1);
48386 					}
48387 					}
48388 				}
48389 
48390 				}
48391 				break;
48392 			case 2:
48393 				{
48394 				setState(6762);
48395 				_la = _input.LA(1);
48396 				if ( !(_la==FROM || _la==FOR) ) {
48397 				_errHandler.recoverInline(this);
48398 				}
48399 				else {
48400 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48401 					_errHandler.reportMatch(this);
48402 					consume();
48403 				}
48404 				setState(6763);
48405 				match(CERTIFICATE);
48406 				setState(6764);
48407 				identifier();
48408 				}
48409 				break;
48410 			case 3:
48411 				{
48412 				setState(6765);
48413 				_la = _input.LA(1);
48414 				if ( !(_la==FROM || _la==FOR) ) {
48415 				_errHandler.recoverInline(this);
48416 				}
48417 				else {
48418 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48419 					_errHandler.reportMatch(this);
48420 					consume();
48421 				}
48422 				setState(6766);
48423 				match(ASYMMETRIC);
48424 				setState(6767);
48425 				match(KEY);
48426 				setState(6768);
48427 				identifier();
48428 				}
48429 				break;
48430 			}
48431 			}
48432 		}
48433 		catch (RecognitionException re) {
48434 			_localctx.exception = re;
48435 			_errHandler.reportError(this, re);
48436 			_errHandler.recover(this, re);
48437 		}
48438 		finally {
48439 			exitRule();
48440 		}
48441 		return _localctx;
48442 	}
48443 
48444 	public static class OptionsListContext extends ParserRuleContext {
48445 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48446 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48447 		public SchemaNameContext schemaName() {
48448 			return getRuleContext(SchemaNameContext.class,0);
48449 		}
48450 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
48451 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
48452 		public IdentifierContext identifier() {
48453 			return getRuleContext(IdentifierContext.class,0);
48454 		}
48455 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
48456 		public SidContext sid() {
48457 			return getRuleContext(SidContext.class,0);
48458 		}
48459 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
48460 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
48461 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
48462 		public OptionsListContext(ParserRuleContext parent, int invokingState) {
48463 			super(parent, invokingState);
48464 		}
48465 		@Override public int getRuleIndex() { return RULE_optionsList; }
48466 		@Override
48467 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48468 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionsList(this);
48469 			else return visitor.visitChildren(this);
48470 		}
48471 	}
48472 
48473 	public final OptionsListContext optionsList() throws RecognitionException {
48474 		OptionsListContext _localctx = new OptionsListContext(_ctx, getState());
48475 		enterRule(_localctx, 926, RULE_optionsList);
48476 		int _la;
48477 		try {
48478 			setState(6788);
48479 			_errHandler.sync(this);
48480 			switch (_input.LA(1)) {
48481 			case DEFAULT_SCHEMA:
48482 				enterOuterAlt(_localctx, 1);
48483 				{
48484 				setState(6771);
48485 				match(DEFAULT_SCHEMA);
48486 				setState(6772);
48487 				match(EQ_);
48488 				setState(6773);
48489 				schemaName();
48490 				}
48491 				break;
48492 			case DEFAULT_LANGUAGE:
48493 				enterOuterAlt(_localctx, 2);
48494 				{
48495 				setState(6774);
48496 				match(DEFAULT_LANGUAGE);
48497 				setState(6775);
48498 				match(EQ_);
48499 				setState(6778);
48500 				_errHandler.sync(this);
48501 				switch (_input.LA(1)) {
48502 				case NONE:
48503 					{
48504 					setState(6776);
48505 					match(NONE);
48506 					}
48507 					break;
48508 				case TRUNCATE:
48509 				case SCHEMA:
48510 				case COLUMNS:
48511 				case PRECISION:
48512 				case FUNCTION:
48513 				case TRIGGER:
48514 				case CAST:
48515 				case TRIM:
48516 				case SUBSTRING:
48517 				case OFF:
48518 				case GROUP:
48519 				case LIMIT:
48520 				case OFFSET:
48521 				case SAVEPOINT:
48522 				case BOOLEAN:
48523 				case ARRAY:
48524 				case DATE:
48525 				case TIMESTAMP:
48526 				case LOCALTIME:
48527 				case LOCALTIMESTAMP:
48528 				case YEAR:
48529 				case QUARTER:
48530 				case MONTH:
48531 				case WEEK:
48532 				case DAY:
48533 				case SECOND:
48534 				case MICROSECOND:
48535 				case MAX:
48536 				case MIN:
48537 				case SUM:
48538 				case COUNT:
48539 				case AVG:
48540 				case ENABLE:
48541 				case DISABLE:
48542 				case INSTANCE:
48543 				case DO:
48544 				case DEFINER:
48545 				case SQL:
48546 				case CASCADED:
48547 				case LOCAL:
48548 				case NEXT:
48549 				case NAME:
48550 				case INTEGER:
48551 				case TYPE:
48552 				case TEXT:
48553 				case VIEWS:
48554 				case READ_ONLY:
48555 				case DATABASE:
48556 				case RETURNS:
48557 				case DATEPART:
48558 				case PASSWORD:
48559 				case BINARY:
48560 				case HIDDEN_:
48561 				case MOD:
48562 				case PARTITION:
48563 				case PARTITIONS:
48564 				case TOP:
48565 				case ROW:
48566 				case ROWS:
48567 				case XOR:
48568 				case ALWAYS:
48569 				case ROLE:
48570 				case START:
48571 				case ALGORITHM:
48572 				case AUTO:
48573 				case BLOCKERS:
48574 				case CLUSTERED:
48575 				case NONCLUSTERED:
48576 				case COLUMNSTORE:
48577 				case CONTENT:
48578 				case YEARS:
48579 				case MONTHS:
48580 				case WEEKS:
48581 				case DAYS:
48582 				case MINUTES:
48583 				case DENY:
48584 				case DETERMINISTIC:
48585 				case DISTRIBUTION:
48586 				case DOCUMENT:
48587 				case DURABILITY:
48588 				case ENCRYPTED:
48589 				case FILESTREAM:
48590 				case FILETABLE:
48591 				case FILLFACTOR:
48592 				case FOLLOWING:
48593 				case HASH:
48594 				case HEAP:
48595 				case INBOUND:
48596 				case OUTBOUND:
48597 				case UNBOUNDED:
48598 				case INFINITE:
48599 				case LOGIN:
48600 				case MASKED:
48601 				case MAXDOP:
48602 				case MOVE:
48603 				case NOCHECK:
48604 				case OBJECT:
48605 				case ONLINE:
48606 				case OVER:
48607 				case PAGE:
48608 				case PAUSED:
48609 				case PERIOD:
48610 				case PERSISTED:
48611 				case PRECEDING:
48612 				case RANDOMIZED:
48613 				case RANGE:
48614 				case REBUILD:
48615 				case REPLICATE:
48616 				case REPLICATION:
48617 				case RESUMABLE:
48618 				case ROWGUIDCOL:
48619 				case SAVE:
48620 				case SELF:
48621 				case SPARSE:
48622 				case SWITCH:
48623 				case TRAN:
48624 				case TRANCOUNT:
48625 				case CONTROL:
48626 				case CONCAT:
48627 				case TAKE:
48628 				case OWNERSHIP:
48629 				case DEFINITION:
48630 				case APPLICATION:
48631 				case ASSEMBLY:
48632 				case SYMMETRIC:
48633 				case ASYMMETRIC:
48634 				case SERVER:
48635 				case RECEIVE:
48636 				case CHANGE:
48637 				case TRACE:
48638 				case TRACKING:
48639 				case RESOURCES:
48640 				case SETTINGS:
48641 				case STATE:
48642 				case AVAILABILITY:
48643 				case CREDENTIAL:
48644 				case ENDPOINT:
48645 				case EVENT:
48646 				case NOTIFICATION:
48647 				case LINKED:
48648 				case AUDIT:
48649 				case DDL:
48650 				case XML:
48651 				case IMPERSONATE:
48652 				case SECURABLES:
48653 				case AUTHENTICATE:
48654 				case EXTERNAL:
48655 				case ACCESS:
48656 				case ADMINISTER:
48657 				case BULK:
48658 				case OPERATIONS:
48659 				case UNSAFE:
48660 				case SHUTDOWN:
48661 				case SCOPED:
48662 				case CONFIGURATION:
48663 				case DATASPACE:
48664 				case SERVICE:
48665 				case CERTIFICATE:
48666 				case CONTRACT:
48667 				case ENCRYPTION:
48668 				case MASTER:
48669 				case DATA:
48670 				case SOURCE:
48671 				case FILE:
48672 				case FORMAT:
48673 				case LIBRARY:
48674 				case FULLTEXT:
48675 				case MASK:
48676 				case UNMASK:
48677 				case MESSAGE:
48678 				case REMOTE:
48679 				case BINDING:
48680 				case ROUTE:
48681 				case SECURITY:
48682 				case POLICY:
48683 				case AGGREGATE:
48684 				case QUEUE:
48685 				case RULE:
48686 				case SYNONYM:
48687 				case COLLECTION:
48688 				case SCRIPT:
48689 				case KILL:
48690 				case BACKUP:
48691 				case LOG:
48692 				case SHOWPLAN:
48693 				case SUBSCRIBE:
48694 				case QUERY:
48695 				case NOTIFICATIONS:
48696 				case CHECKPOINT:
48697 				case SEQUENCE:
48698 				case ABORT_AFTER_WAIT:
48699 				case ALLOW_PAGE_LOCKS:
48700 				case ALLOW_ROW_LOCKS:
48701 				case ALL_SPARSE_COLUMNS:
48702 				case BUCKET_COUNT:
48703 				case COLUMNSTORE_ARCHIVE:
48704 				case COLUMN_ENCRYPTION_KEY:
48705 				case COLUMN_SET:
48706 				case COMPRESSION_DELAY:
48707 				case DATABASE_DEAULT:
48708 				case DATA_COMPRESSION:
48709 				case DATA_CONSISTENCY_CHECK:
48710 				case ENCRYPTION_TYPE:
48711 				case SYSTEM_TIME:
48712 				case SYSTEM_VERSIONING:
48713 				case TEXTIMAGE_ON:
48714 				case WAIT_AT_LOW_PRIORITY:
48715 				case STATISTICS_INCREMENTAL:
48716 				case STATISTICS_NORECOMPUTE:
48717 				case ROUND_ROBIN:
48718 				case SCHEMA_AND_DATA:
48719 				case SCHEMA_ONLY:
48720 				case SORT_IN_TEMPDB:
48721 				case IGNORE_DUP_KEY:
48722 				case IMPLICIT_TRANSACTIONS:
48723 				case MAX_DURATION:
48724 				case MEMORY_OPTIMIZED:
48725 				case MIGRATION_STATE:
48726 				case PAD_INDEX:
48727 				case REMOTE_DATA_ARCHIVE:
48728 				case FILESTREAM_ON:
48729 				case FILETABLE_COLLATE_FILENAME:
48730 				case FILETABLE_DIRECTORY:
48731 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
48732 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
48733 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
48734 				case FILTER_PREDICATE:
48735 				case HISTORY_RETENTION_PERIOD:
48736 				case HISTORY_TABLE:
48737 				case LOCK_ESCALATION:
48738 				case DROP_EXISTING:
48739 				case ROW_NUMBER:
48740 				case FIRST:
48741 				case DATETIME2:
48742 				case OUTPUT:
48743 				case INSERTED:
48744 				case DELETED:
48745 				case FILENAME:
48746 				case SIZE:
48747 				case MAXSIZE:
48748 				case FILEGROWTH:
48749 				case UNLIMITED:
48750 				case KB:
48751 				case MB:
48752 				case GB:
48753 				case TB:
48754 				case CONTAINS:
48755 				case MEMORY_OPTIMIZED_DATA:
48756 				case FILEGROUP:
48757 				case NON_TRANSACTED_ACCESS:
48758 				case DB_CHAINING:
48759 				case TRUSTWORTHY:
48760 				case FORWARD_ONLY:
48761 				case KEYSET:
48762 				case FAST_FORWARD:
48763 				case SCROLL_LOCKS:
48764 				case OPTIMISTIC:
48765 				case TYPE_WARNING:
48766 				case SCHEMABINDING:
48767 				case CALLER:
48768 				case INPUT:
48769 				case OWNER:
48770 				case SNAPSHOT:
48771 				case REPEATABLE:
48772 				case SERIALIZABLE:
48773 				case NATIVE_COMPILATION:
48774 				case VIEW_METADATA:
48775 				case INSTEAD:
48776 				case APPEND:
48777 				case INCREMENT:
48778 				case CACHE:
48779 				case MINVALUE:
48780 				case MAXVALUE:
48781 				case RESTART:
48782 				case LOB_COMPACTION:
48783 				case COMPRESS_ALL_ROW_GROUPS:
48784 				case REORGANIZE:
48785 				case RESUME:
48786 				case PAUSE:
48787 				case ABORT:
48788 				case ACCELERATED_DATABASE_RECOVERY:
48789 				case PERSISTENT_VERSION_STORE_FILEGROUP:
48790 				case IMMEDIATE:
48791 				case NO_WAIT:
48792 				case TARGET_RECOVERY_TIME:
48793 				case SECONDS:
48794 				case HONOR_BROKER_PRIORITY:
48795 				case ERROR_BROKER_CONVERSATIONS:
48796 				case NEW_BROKER:
48797 				case DISABLE_BROKER:
48798 				case ENABLE_BROKER:
48799 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
48800 				case READ_COMMITTED_SNAPSHOT:
48801 				case ALLOW_SNAPSHOT_ISOLATION:
48802 				case RECURSIVE_TRIGGERS:
48803 				case QUOTED_IDENTIFIER:
48804 				case NUMERIC_ROUNDABORT:
48805 				case CONCAT_NULL_YIELDS_NULL:
48806 				case COMPATIBILITY_LEVEL:
48807 				case ARITHABORT:
48808 				case ANSI_WARNINGS:
48809 				case ANSI_PADDING:
48810 				case ANSI_NULLS:
48811 				case ANSI_NULL_DEFAULT:
48812 				case PAGE_VERIFY:
48813 				case CHECKSUM:
48814 				case TORN_PAGE_DETECTION:
48815 				case BULK_LOGGED:
48816 				case RECOVERY:
48817 				case TOTAL_EXECUTION_CPU_TIME_MS:
48818 				case TOTAL_COMPILE_CPU_TIME_MS:
48819 				case STALE_CAPTURE_POLICY_THRESHOLD:
48820 				case EXECUTION_COUNT:
48821 				case QUERY_CAPTURE_POLICY:
48822 				case WAIT_STATS_CAPTURE_MODE:
48823 				case MAX_PLANS_PER_QUERY:
48824 				case QUERY_CAPTURE_MODE:
48825 				case SIZE_BASED_CLEANUP_MODE:
48826 				case INTERVAL_LENGTH_MINUTES:
48827 				case MAX_STORAGE_SIZE_MB:
48828 				case DATA_FLUSH_INTERVAL_SECONDS:
48829 				case CLEANUP_POLICY:
48830 				case CUSTOM:
48831 				case STALE_QUERY_THRESHOLD_DAYS:
48832 				case OPERATION_MODE:
48833 				case QUERY_STORE:
48834 				case CURSOR_DEFAULT:
48835 				case GLOBAL:
48836 				case CURSOR_CLOSE_ON_COMMIT:
48837 				case HOURS:
48838 				case CHANGE_RETENTION:
48839 				case AUTO_CLEANUP:
48840 				case CHANGE_TRACKING:
48841 				case AUTOMATIC_TUNING:
48842 				case FORCE_LAST_GOOD_PLAN:
48843 				case AUTO_UPDATE_STATISTICS_ASYNC:
48844 				case AUTO_UPDATE_STATISTICS:
48845 				case AUTO_SHRINK:
48846 				case AUTO_CREATE_STATISTICS:
48847 				case INCREMENTAL:
48848 				case AUTO_CLOSE:
48849 				case DATA_RETENTION:
48850 				case TEMPORAL_HISTORY_RETENTION:
48851 				case EDITION:
48852 				case MIXED_PAGE_ALLOCATION:
48853 				case DISABLED:
48854 				case ALLOWED:
48855 				case HADR:
48856 				case MULTI_USER:
48857 				case RESTRICTED_USER:
48858 				case SINGLE_USER:
48859 				case OFFLINE:
48860 				case EMERGENCY:
48861 				case SUSPEND:
48862 				case DATE_CORRELATION_OPTIMIZATION:
48863 				case ELASTIC_POOL:
48864 				case SERVICE_OBJECTIVE:
48865 				case DATABASE_NAME:
48866 				case ALLOW_CONNECTIONS:
48867 				case GEO:
48868 				case NAMED:
48869 				case DATEFIRST:
48870 				case BACKUP_STORAGE_REDUNDANCY:
48871 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
48872 				case SECONDARY:
48873 				case FAILOVER:
48874 				case DEFAULT_FULLTEXT_LANGUAGE:
48875 				case DEFAULT_LANGUAGE:
48876 				case INLINE:
48877 				case NESTED_TRIGGERS:
48878 				case TRANSFORM_NOISE_WORDS:
48879 				case TWO_DIGIT_YEAR_CUTOFF:
48880 				case PERSISTENT_LOG_BUFFER:
48881 				case DIRECTORY_NAME:
48882 				case DATEFORMAT:
48883 				case DELAYED_DURABILITY:
48884 				case AUTHORIZATION:
48885 				case TRANSFER:
48886 				case PROVIDER:
48887 				case SEARCH:
48888 				case MEMBER:
48889 				case IDENTIFIER_:
48890 				case DELIMITED_IDENTIFIER_:
48891 					{
48892 					setState(6777);
48893 					identifier();
48894 					}
48895 					break;
48896 				default:
48897 					throw new NoViableAltException(this);
48898 				}
48899 				}
48900 				break;
48901 			case SID:
48902 				enterOuterAlt(_localctx, 3);
48903 				{
48904 				setState(6780);
48905 				match(SID);
48906 				setState(6781);
48907 				match(EQ_);
48908 				setState(6782);
48909 				sid();
48910 				}
48911 				break;
48912 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
48913 				enterOuterAlt(_localctx, 4);
48914 				{
48915 				setState(6783);
48916 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
48917 				setState(6784);
48918 				match(EQ_);
48919 				setState(6786);
48920 				_errHandler.sync(this);
48921 				_la = _input.LA(1);
48922 				if (_la==ON || _la==OFF) {
48923 					{
48924 					setState(6785);
48925 					_la = _input.LA(1);
48926 					if ( !(_la==ON || _la==OFF) ) {
48927 					_errHandler.recoverInline(this);
48928 					}
48929 					else {
48930 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48931 						_errHandler.reportMatch(this);
48932 						consume();
48933 					}
48934 					}
48935 				}
48936 
48937 				}
48938 				break;
48939 			default:
48940 				throw new NoViableAltException(this);
48941 			}
48942 		}
48943 		catch (RecognitionException re) {
48944 			_localctx.exception = re;
48945 			_errHandler.reportError(this, re);
48946 			_errHandler.recover(this, re);
48947 		}
48948 		finally {
48949 			exitRule();
48950 		}
48951 		return _localctx;
48952 	}
48953 
48954 	public static class LimitedOptionsListContext extends ParserRuleContext {
48955 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48956 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48957 		public SchemaNameContext schemaName() {
48958 			return getRuleContext(SchemaNameContext.class,0);
48959 		}
48960 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
48961 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
48962 		public IdentifierContext identifier() {
48963 			return getRuleContext(IdentifierContext.class,0);
48964 		}
48965 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
48966 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
48967 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
48968 		public LimitedOptionsListContext(ParserRuleContext parent, int invokingState) {
48969 			super(parent, invokingState);
48970 		}
48971 		@Override public int getRuleIndex() { return RULE_limitedOptionsList; }
48972 		@Override
48973 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48974 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLimitedOptionsList(this);
48975 			else return visitor.visitChildren(this);
48976 		}
48977 	}
48978 
48979 	public final LimitedOptionsListContext limitedOptionsList() throws RecognitionException {
48980 		LimitedOptionsListContext _localctx = new LimitedOptionsListContext(_ctx, getState());
48981 		enterRule(_localctx, 928, RULE_limitedOptionsList);
48982 		int _la;
48983 		try {
48984 			setState(6804);
48985 			_errHandler.sync(this);
48986 			switch (_input.LA(1)) {
48987 			case DEFAULT_SCHEMA:
48988 				enterOuterAlt(_localctx, 1);
48989 				{
48990 				setState(6790);
48991 				match(DEFAULT_SCHEMA);
48992 				setState(6791);
48993 				match(EQ_);
48994 				setState(6792);
48995 				schemaName();
48996 				}
48997 				break;
48998 			case DEFAULT_LANGUAGE:
48999 				enterOuterAlt(_localctx, 2);
49000 				{
49001 				setState(6793);
49002 				match(DEFAULT_LANGUAGE);
49003 				setState(6794);
49004 				match(EQ_);
49005 				setState(6797);
49006 				_errHandler.sync(this);
49007 				switch (_input.LA(1)) {
49008 				case NONE:
49009 					{
49010 					setState(6795);
49011 					match(NONE);
49012 					}
49013 					break;
49014 				case TRUNCATE:
49015 				case SCHEMA:
49016 				case COLUMNS:
49017 				case PRECISION:
49018 				case FUNCTION:
49019 				case TRIGGER:
49020 				case CAST:
49021 				case TRIM:
49022 				case SUBSTRING:
49023 				case OFF:
49024 				case GROUP:
49025 				case LIMIT:
49026 				case OFFSET:
49027 				case SAVEPOINT:
49028 				case BOOLEAN:
49029 				case ARRAY:
49030 				case DATE:
49031 				case TIMESTAMP:
49032 				case LOCALTIME:
49033 				case LOCALTIMESTAMP:
49034 				case YEAR:
49035 				case QUARTER:
49036 				case MONTH:
49037 				case WEEK:
49038 				case DAY:
49039 				case SECOND:
49040 				case MICROSECOND:
49041 				case MAX:
49042 				case MIN:
49043 				case SUM:
49044 				case COUNT:
49045 				case AVG:
49046 				case ENABLE:
49047 				case DISABLE:
49048 				case INSTANCE:
49049 				case DO:
49050 				case DEFINER:
49051 				case SQL:
49052 				case CASCADED:
49053 				case LOCAL:
49054 				case NEXT:
49055 				case NAME:
49056 				case INTEGER:
49057 				case TYPE:
49058 				case TEXT:
49059 				case VIEWS:
49060 				case READ_ONLY:
49061 				case DATABASE:
49062 				case RETURNS:
49063 				case DATEPART:
49064 				case PASSWORD:
49065 				case BINARY:
49066 				case HIDDEN_:
49067 				case MOD:
49068 				case PARTITION:
49069 				case PARTITIONS:
49070 				case TOP:
49071 				case ROW:
49072 				case ROWS:
49073 				case XOR:
49074 				case ALWAYS:
49075 				case ROLE:
49076 				case START:
49077 				case ALGORITHM:
49078 				case AUTO:
49079 				case BLOCKERS:
49080 				case CLUSTERED:
49081 				case NONCLUSTERED:
49082 				case COLUMNSTORE:
49083 				case CONTENT:
49084 				case YEARS:
49085 				case MONTHS:
49086 				case WEEKS:
49087 				case DAYS:
49088 				case MINUTES:
49089 				case DENY:
49090 				case DETERMINISTIC:
49091 				case DISTRIBUTION:
49092 				case DOCUMENT:
49093 				case DURABILITY:
49094 				case ENCRYPTED:
49095 				case FILESTREAM:
49096 				case FILETABLE:
49097 				case FILLFACTOR:
49098 				case FOLLOWING:
49099 				case HASH:
49100 				case HEAP:
49101 				case INBOUND:
49102 				case OUTBOUND:
49103 				case UNBOUNDED:
49104 				case INFINITE:
49105 				case LOGIN:
49106 				case MASKED:
49107 				case MAXDOP:
49108 				case MOVE:
49109 				case NOCHECK:
49110 				case OBJECT:
49111 				case ONLINE:
49112 				case OVER:
49113 				case PAGE:
49114 				case PAUSED:
49115 				case PERIOD:
49116 				case PERSISTED:
49117 				case PRECEDING:
49118 				case RANDOMIZED:
49119 				case RANGE:
49120 				case REBUILD:
49121 				case REPLICATE:
49122 				case REPLICATION:
49123 				case RESUMABLE:
49124 				case ROWGUIDCOL:
49125 				case SAVE:
49126 				case SELF:
49127 				case SPARSE:
49128 				case SWITCH:
49129 				case TRAN:
49130 				case TRANCOUNT:
49131 				case CONTROL:
49132 				case CONCAT:
49133 				case TAKE:
49134 				case OWNERSHIP:
49135 				case DEFINITION:
49136 				case APPLICATION:
49137 				case ASSEMBLY:
49138 				case SYMMETRIC:
49139 				case ASYMMETRIC:
49140 				case SERVER:
49141 				case RECEIVE:
49142 				case CHANGE:
49143 				case TRACE:
49144 				case TRACKING:
49145 				case RESOURCES:
49146 				case SETTINGS:
49147 				case STATE:
49148 				case AVAILABILITY:
49149 				case CREDENTIAL:
49150 				case ENDPOINT:
49151 				case EVENT:
49152 				case NOTIFICATION:
49153 				case LINKED:
49154 				case AUDIT:
49155 				case DDL:
49156 				case XML:
49157 				case IMPERSONATE:
49158 				case SECURABLES:
49159 				case AUTHENTICATE:
49160 				case EXTERNAL:
49161 				case ACCESS:
49162 				case ADMINISTER:
49163 				case BULK:
49164 				case OPERATIONS:
49165 				case UNSAFE:
49166 				case SHUTDOWN:
49167 				case SCOPED:
49168 				case CONFIGURATION:
49169 				case DATASPACE:
49170 				case SERVICE:
49171 				case CERTIFICATE:
49172 				case CONTRACT:
49173 				case ENCRYPTION:
49174 				case MASTER:
49175 				case DATA:
49176 				case SOURCE:
49177 				case FILE:
49178 				case FORMAT:
49179 				case LIBRARY:
49180 				case FULLTEXT:
49181 				case MASK:
49182 				case UNMASK:
49183 				case MESSAGE:
49184 				case REMOTE:
49185 				case BINDING:
49186 				case ROUTE:
49187 				case SECURITY:
49188 				case POLICY:
49189 				case AGGREGATE:
49190 				case QUEUE:
49191 				case RULE:
49192 				case SYNONYM:
49193 				case COLLECTION:
49194 				case SCRIPT:
49195 				case KILL:
49196 				case BACKUP:
49197 				case LOG:
49198 				case SHOWPLAN:
49199 				case SUBSCRIBE:
49200 				case QUERY:
49201 				case NOTIFICATIONS:
49202 				case CHECKPOINT:
49203 				case SEQUENCE:
49204 				case ABORT_AFTER_WAIT:
49205 				case ALLOW_PAGE_LOCKS:
49206 				case ALLOW_ROW_LOCKS:
49207 				case ALL_SPARSE_COLUMNS:
49208 				case BUCKET_COUNT:
49209 				case COLUMNSTORE_ARCHIVE:
49210 				case COLUMN_ENCRYPTION_KEY:
49211 				case COLUMN_SET:
49212 				case COMPRESSION_DELAY:
49213 				case DATABASE_DEAULT:
49214 				case DATA_COMPRESSION:
49215 				case DATA_CONSISTENCY_CHECK:
49216 				case ENCRYPTION_TYPE:
49217 				case SYSTEM_TIME:
49218 				case SYSTEM_VERSIONING:
49219 				case TEXTIMAGE_ON:
49220 				case WAIT_AT_LOW_PRIORITY:
49221 				case STATISTICS_INCREMENTAL:
49222 				case STATISTICS_NORECOMPUTE:
49223 				case ROUND_ROBIN:
49224 				case SCHEMA_AND_DATA:
49225 				case SCHEMA_ONLY:
49226 				case SORT_IN_TEMPDB:
49227 				case IGNORE_DUP_KEY:
49228 				case IMPLICIT_TRANSACTIONS:
49229 				case MAX_DURATION:
49230 				case MEMORY_OPTIMIZED:
49231 				case MIGRATION_STATE:
49232 				case PAD_INDEX:
49233 				case REMOTE_DATA_ARCHIVE:
49234 				case FILESTREAM_ON:
49235 				case FILETABLE_COLLATE_FILENAME:
49236 				case FILETABLE_DIRECTORY:
49237 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49238 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49239 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49240 				case FILTER_PREDICATE:
49241 				case HISTORY_RETENTION_PERIOD:
49242 				case HISTORY_TABLE:
49243 				case LOCK_ESCALATION:
49244 				case DROP_EXISTING:
49245 				case ROW_NUMBER:
49246 				case FIRST:
49247 				case DATETIME2:
49248 				case OUTPUT:
49249 				case INSERTED:
49250 				case DELETED:
49251 				case FILENAME:
49252 				case SIZE:
49253 				case MAXSIZE:
49254 				case FILEGROWTH:
49255 				case UNLIMITED:
49256 				case KB:
49257 				case MB:
49258 				case GB:
49259 				case TB:
49260 				case CONTAINS:
49261 				case MEMORY_OPTIMIZED_DATA:
49262 				case FILEGROUP:
49263 				case NON_TRANSACTED_ACCESS:
49264 				case DB_CHAINING:
49265 				case TRUSTWORTHY:
49266 				case FORWARD_ONLY:
49267 				case KEYSET:
49268 				case FAST_FORWARD:
49269 				case SCROLL_LOCKS:
49270 				case OPTIMISTIC:
49271 				case TYPE_WARNING:
49272 				case SCHEMABINDING:
49273 				case CALLER:
49274 				case INPUT:
49275 				case OWNER:
49276 				case SNAPSHOT:
49277 				case REPEATABLE:
49278 				case SERIALIZABLE:
49279 				case NATIVE_COMPILATION:
49280 				case VIEW_METADATA:
49281 				case INSTEAD:
49282 				case APPEND:
49283 				case INCREMENT:
49284 				case CACHE:
49285 				case MINVALUE:
49286 				case MAXVALUE:
49287 				case RESTART:
49288 				case LOB_COMPACTION:
49289 				case COMPRESS_ALL_ROW_GROUPS:
49290 				case REORGANIZE:
49291 				case RESUME:
49292 				case PAUSE:
49293 				case ABORT:
49294 				case ACCELERATED_DATABASE_RECOVERY:
49295 				case PERSISTENT_VERSION_STORE_FILEGROUP:
49296 				case IMMEDIATE:
49297 				case NO_WAIT:
49298 				case TARGET_RECOVERY_TIME:
49299 				case SECONDS:
49300 				case HONOR_BROKER_PRIORITY:
49301 				case ERROR_BROKER_CONVERSATIONS:
49302 				case NEW_BROKER:
49303 				case DISABLE_BROKER:
49304 				case ENABLE_BROKER:
49305 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49306 				case READ_COMMITTED_SNAPSHOT:
49307 				case ALLOW_SNAPSHOT_ISOLATION:
49308 				case RECURSIVE_TRIGGERS:
49309 				case QUOTED_IDENTIFIER:
49310 				case NUMERIC_ROUNDABORT:
49311 				case CONCAT_NULL_YIELDS_NULL:
49312 				case COMPATIBILITY_LEVEL:
49313 				case ARITHABORT:
49314 				case ANSI_WARNINGS:
49315 				case ANSI_PADDING:
49316 				case ANSI_NULLS:
49317 				case ANSI_NULL_DEFAULT:
49318 				case PAGE_VERIFY:
49319 				case CHECKSUM:
49320 				case TORN_PAGE_DETECTION:
49321 				case BULK_LOGGED:
49322 				case RECOVERY:
49323 				case TOTAL_EXECUTION_CPU_TIME_MS:
49324 				case TOTAL_COMPILE_CPU_TIME_MS:
49325 				case STALE_CAPTURE_POLICY_THRESHOLD:
49326 				case EXECUTION_COUNT:
49327 				case QUERY_CAPTURE_POLICY:
49328 				case WAIT_STATS_CAPTURE_MODE:
49329 				case MAX_PLANS_PER_QUERY:
49330 				case QUERY_CAPTURE_MODE:
49331 				case SIZE_BASED_CLEANUP_MODE:
49332 				case INTERVAL_LENGTH_MINUTES:
49333 				case MAX_STORAGE_SIZE_MB:
49334 				case DATA_FLUSH_INTERVAL_SECONDS:
49335 				case CLEANUP_POLICY:
49336 				case CUSTOM:
49337 				case STALE_QUERY_THRESHOLD_DAYS:
49338 				case OPERATION_MODE:
49339 				case QUERY_STORE:
49340 				case CURSOR_DEFAULT:
49341 				case GLOBAL:
49342 				case CURSOR_CLOSE_ON_COMMIT:
49343 				case HOURS:
49344 				case CHANGE_RETENTION:
49345 				case AUTO_CLEANUP:
49346 				case CHANGE_TRACKING:
49347 				case AUTOMATIC_TUNING:
49348 				case FORCE_LAST_GOOD_PLAN:
49349 				case AUTO_UPDATE_STATISTICS_ASYNC:
49350 				case AUTO_UPDATE_STATISTICS:
49351 				case AUTO_SHRINK:
49352 				case AUTO_CREATE_STATISTICS:
49353 				case INCREMENTAL:
49354 				case AUTO_CLOSE:
49355 				case DATA_RETENTION:
49356 				case TEMPORAL_HISTORY_RETENTION:
49357 				case EDITION:
49358 				case MIXED_PAGE_ALLOCATION:
49359 				case DISABLED:
49360 				case ALLOWED:
49361 				case HADR:
49362 				case MULTI_USER:
49363 				case RESTRICTED_USER:
49364 				case SINGLE_USER:
49365 				case OFFLINE:
49366 				case EMERGENCY:
49367 				case SUSPEND:
49368 				case DATE_CORRELATION_OPTIMIZATION:
49369 				case ELASTIC_POOL:
49370 				case SERVICE_OBJECTIVE:
49371 				case DATABASE_NAME:
49372 				case ALLOW_CONNECTIONS:
49373 				case GEO:
49374 				case NAMED:
49375 				case DATEFIRST:
49376 				case BACKUP_STORAGE_REDUNDANCY:
49377 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49378 				case SECONDARY:
49379 				case FAILOVER:
49380 				case DEFAULT_FULLTEXT_LANGUAGE:
49381 				case DEFAULT_LANGUAGE:
49382 				case INLINE:
49383 				case NESTED_TRIGGERS:
49384 				case TRANSFORM_NOISE_WORDS:
49385 				case TWO_DIGIT_YEAR_CUTOFF:
49386 				case PERSISTENT_LOG_BUFFER:
49387 				case DIRECTORY_NAME:
49388 				case DATEFORMAT:
49389 				case DELAYED_DURABILITY:
49390 				case AUTHORIZATION:
49391 				case TRANSFER:
49392 				case PROVIDER:
49393 				case SEARCH:
49394 				case MEMBER:
49395 				case IDENTIFIER_:
49396 				case DELIMITED_IDENTIFIER_:
49397 					{
49398 					setState(6796);
49399 					identifier();
49400 					}
49401 					break;
49402 				default:
49403 					throw new NoViableAltException(this);
49404 				}
49405 				}
49406 				break;
49407 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
49408 				enterOuterAlt(_localctx, 3);
49409 				{
49410 				setState(6799);
49411 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
49412 				setState(6800);
49413 				match(EQ_);
49414 				setState(6802);
49415 				_errHandler.sync(this);
49416 				_la = _input.LA(1);
49417 				if (_la==ON || _la==OFF) {
49418 					{
49419 					setState(6801);
49420 					_la = _input.LA(1);
49421 					if ( !(_la==ON || _la==OFF) ) {
49422 					_errHandler.recoverInline(this);
49423 					}
49424 					else {
49425 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49426 						_errHandler.reportMatch(this);
49427 						consume();
49428 					}
49429 					}
49430 				}
49431 
49432 				}
49433 				break;
49434 			default:
49435 				throw new NoViableAltException(this);
49436 			}
49437 		}
49438 		catch (RecognitionException re) {
49439 			_localctx.exception = re;
49440 			_errHandler.reportError(this, re);
49441 			_errHandler.recover(this, re);
49442 		}
49443 		finally {
49444 			exitRule();
49445 		}
49446 		return _localctx;
49447 	}
49448 
49449 	public static class CreateUserFromExternalProviderClauseContext extends ParserRuleContext {
49450 		public UserNameContext userName() {
49451 			return getRuleContext(UserNameContext.class,0);
49452 		}
49453 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
49454 		public IdentifierContext identifier() {
49455 			return getRuleContext(IdentifierContext.class,0);
49456 		}
49457 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
49458 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49459 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
49460 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
49461 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49462 		public List<LimitedOptionsListContext> limitedOptionsList() {
49463 			return getRuleContexts(LimitedOptionsListContext.class);
49464 		}
49465 		public LimitedOptionsListContext limitedOptionsList(int i) {
49466 			return getRuleContext(LimitedOptionsListContext.class,i);
49467 		}
49468 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
49469 		public TerminalNode COMMA_(int i) {
49470 			return getToken(SQLServerStatementParser.COMMA_, i);
49471 		}
49472 		public CreateUserFromExternalProviderClauseContext(ParserRuleContext parent, int invokingState) {
49473 			super(parent, invokingState);
49474 		}
49475 		@Override public int getRuleIndex() { return RULE_createUserFromExternalProviderClause; }
49476 		@Override
49477 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49478 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserFromExternalProviderClause(this);
49479 			else return visitor.visitChildren(this);
49480 		}
49481 	}
49482 
49483 	public final CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() throws RecognitionException {
49484 		CreateUserFromExternalProviderClauseContext _localctx = new CreateUserFromExternalProviderClauseContext(_ctx, getState());
49485 		enterRule(_localctx, 930, RULE_createUserFromExternalProviderClause);
49486 		int _la;
49487 		try {
49488 			setState(6826);
49489 			_errHandler.sync(this);
49490 			switch (_input.LA(1)) {
49491 			case TRUNCATE:
49492 			case SCHEMA:
49493 			case COLUMNS:
49494 			case PRECISION:
49495 			case FUNCTION:
49496 			case TRIGGER:
49497 			case CAST:
49498 			case TRIM:
49499 			case SUBSTRING:
49500 			case OFF:
49501 			case GROUP:
49502 			case LIMIT:
49503 			case OFFSET:
49504 			case SAVEPOINT:
49505 			case BOOLEAN:
49506 			case ARRAY:
49507 			case DATE:
49508 			case TIMESTAMP:
49509 			case LOCALTIME:
49510 			case LOCALTIMESTAMP:
49511 			case YEAR:
49512 			case QUARTER:
49513 			case MONTH:
49514 			case WEEK:
49515 			case DAY:
49516 			case SECOND:
49517 			case MICROSECOND:
49518 			case MAX:
49519 			case MIN:
49520 			case SUM:
49521 			case COUNT:
49522 			case AVG:
49523 			case ENABLE:
49524 			case DISABLE:
49525 			case INSTANCE:
49526 			case DO:
49527 			case DEFINER:
49528 			case SQL:
49529 			case CASCADED:
49530 			case LOCAL:
49531 			case NEXT:
49532 			case NAME:
49533 			case INTEGER:
49534 			case TYPE:
49535 			case TEXT:
49536 			case VIEWS:
49537 			case READ_ONLY:
49538 			case DATABASE:
49539 			case RETURNS:
49540 			case DATEPART:
49541 			case PASSWORD:
49542 			case BINARY:
49543 			case HIDDEN_:
49544 			case MOD:
49545 			case PARTITION:
49546 			case PARTITIONS:
49547 			case TOP:
49548 			case ROW:
49549 			case ROWS:
49550 			case XOR:
49551 			case ALWAYS:
49552 			case ROLE:
49553 			case START:
49554 			case ALGORITHM:
49555 			case AUTO:
49556 			case BLOCKERS:
49557 			case CLUSTERED:
49558 			case NONCLUSTERED:
49559 			case COLUMNSTORE:
49560 			case CONTENT:
49561 			case YEARS:
49562 			case MONTHS:
49563 			case WEEKS:
49564 			case DAYS:
49565 			case MINUTES:
49566 			case DENY:
49567 			case DETERMINISTIC:
49568 			case DISTRIBUTION:
49569 			case DOCUMENT:
49570 			case DURABILITY:
49571 			case ENCRYPTED:
49572 			case FILESTREAM:
49573 			case FILETABLE:
49574 			case FILLFACTOR:
49575 			case FOLLOWING:
49576 			case HASH:
49577 			case HEAP:
49578 			case INBOUND:
49579 			case OUTBOUND:
49580 			case UNBOUNDED:
49581 			case INFINITE:
49582 			case LOGIN:
49583 			case MASKED:
49584 			case MAXDOP:
49585 			case MOVE:
49586 			case NOCHECK:
49587 			case OBJECT:
49588 			case ONLINE:
49589 			case OVER:
49590 			case PAGE:
49591 			case PAUSED:
49592 			case PERIOD:
49593 			case PERSISTED:
49594 			case PRECEDING:
49595 			case RANDOMIZED:
49596 			case RANGE:
49597 			case REBUILD:
49598 			case REPLICATE:
49599 			case REPLICATION:
49600 			case RESUMABLE:
49601 			case ROWGUIDCOL:
49602 			case SAVE:
49603 			case SELF:
49604 			case SPARSE:
49605 			case SWITCH:
49606 			case TRAN:
49607 			case TRANCOUNT:
49608 			case CONTROL:
49609 			case CONCAT:
49610 			case TAKE:
49611 			case OWNERSHIP:
49612 			case DEFINITION:
49613 			case APPLICATION:
49614 			case ASSEMBLY:
49615 			case SYMMETRIC:
49616 			case ASYMMETRIC:
49617 			case SERVER:
49618 			case RECEIVE:
49619 			case CHANGE:
49620 			case TRACE:
49621 			case TRACKING:
49622 			case RESOURCES:
49623 			case SETTINGS:
49624 			case STATE:
49625 			case AVAILABILITY:
49626 			case CREDENTIAL:
49627 			case ENDPOINT:
49628 			case EVENT:
49629 			case NOTIFICATION:
49630 			case LINKED:
49631 			case AUDIT:
49632 			case DDL:
49633 			case XML:
49634 			case IMPERSONATE:
49635 			case SECURABLES:
49636 			case AUTHENTICATE:
49637 			case EXTERNAL:
49638 			case ACCESS:
49639 			case ADMINISTER:
49640 			case BULK:
49641 			case OPERATIONS:
49642 			case UNSAFE:
49643 			case SHUTDOWN:
49644 			case SCOPED:
49645 			case CONFIGURATION:
49646 			case DATASPACE:
49647 			case SERVICE:
49648 			case CERTIFICATE:
49649 			case CONTRACT:
49650 			case ENCRYPTION:
49651 			case MASTER:
49652 			case DATA:
49653 			case SOURCE:
49654 			case FILE:
49655 			case FORMAT:
49656 			case LIBRARY:
49657 			case FULLTEXT:
49658 			case MASK:
49659 			case UNMASK:
49660 			case MESSAGE:
49661 			case REMOTE:
49662 			case BINDING:
49663 			case ROUTE:
49664 			case SECURITY:
49665 			case POLICY:
49666 			case AGGREGATE:
49667 			case QUEUE:
49668 			case RULE:
49669 			case SYNONYM:
49670 			case COLLECTION:
49671 			case SCRIPT:
49672 			case KILL:
49673 			case BACKUP:
49674 			case LOG:
49675 			case SHOWPLAN:
49676 			case SUBSCRIBE:
49677 			case QUERY:
49678 			case NOTIFICATIONS:
49679 			case CHECKPOINT:
49680 			case SEQUENCE:
49681 			case ABORT_AFTER_WAIT:
49682 			case ALLOW_PAGE_LOCKS:
49683 			case ALLOW_ROW_LOCKS:
49684 			case ALL_SPARSE_COLUMNS:
49685 			case BUCKET_COUNT:
49686 			case COLUMNSTORE_ARCHIVE:
49687 			case COLUMN_ENCRYPTION_KEY:
49688 			case COLUMN_SET:
49689 			case COMPRESSION_DELAY:
49690 			case DATABASE_DEAULT:
49691 			case DATA_COMPRESSION:
49692 			case DATA_CONSISTENCY_CHECK:
49693 			case ENCRYPTION_TYPE:
49694 			case SYSTEM_TIME:
49695 			case SYSTEM_VERSIONING:
49696 			case TEXTIMAGE_ON:
49697 			case WAIT_AT_LOW_PRIORITY:
49698 			case STATISTICS_INCREMENTAL:
49699 			case STATISTICS_NORECOMPUTE:
49700 			case ROUND_ROBIN:
49701 			case SCHEMA_AND_DATA:
49702 			case SCHEMA_ONLY:
49703 			case SORT_IN_TEMPDB:
49704 			case IGNORE_DUP_KEY:
49705 			case IMPLICIT_TRANSACTIONS:
49706 			case MAX_DURATION:
49707 			case MEMORY_OPTIMIZED:
49708 			case MIGRATION_STATE:
49709 			case PAD_INDEX:
49710 			case REMOTE_DATA_ARCHIVE:
49711 			case FILESTREAM_ON:
49712 			case FILETABLE_COLLATE_FILENAME:
49713 			case FILETABLE_DIRECTORY:
49714 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49715 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49716 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49717 			case FILTER_PREDICATE:
49718 			case HISTORY_RETENTION_PERIOD:
49719 			case HISTORY_TABLE:
49720 			case LOCK_ESCALATION:
49721 			case DROP_EXISTING:
49722 			case ROW_NUMBER:
49723 			case FIRST:
49724 			case DATETIME2:
49725 			case OUTPUT:
49726 			case INSERTED:
49727 			case DELETED:
49728 			case FILENAME:
49729 			case SIZE:
49730 			case MAXSIZE:
49731 			case FILEGROWTH:
49732 			case UNLIMITED:
49733 			case KB:
49734 			case MB:
49735 			case GB:
49736 			case TB:
49737 			case CONTAINS:
49738 			case MEMORY_OPTIMIZED_DATA:
49739 			case FILEGROUP:
49740 			case NON_TRANSACTED_ACCESS:
49741 			case DB_CHAINING:
49742 			case TRUSTWORTHY:
49743 			case FORWARD_ONLY:
49744 			case KEYSET:
49745 			case FAST_FORWARD:
49746 			case SCROLL_LOCKS:
49747 			case OPTIMISTIC:
49748 			case TYPE_WARNING:
49749 			case SCHEMABINDING:
49750 			case CALLER:
49751 			case INPUT:
49752 			case OWNER:
49753 			case SNAPSHOT:
49754 			case REPEATABLE:
49755 			case SERIALIZABLE:
49756 			case NATIVE_COMPILATION:
49757 			case VIEW_METADATA:
49758 			case INSTEAD:
49759 			case APPEND:
49760 			case INCREMENT:
49761 			case CACHE:
49762 			case MINVALUE:
49763 			case MAXVALUE:
49764 			case RESTART:
49765 			case LOB_COMPACTION:
49766 			case COMPRESS_ALL_ROW_GROUPS:
49767 			case REORGANIZE:
49768 			case RESUME:
49769 			case PAUSE:
49770 			case ABORT:
49771 			case ACCELERATED_DATABASE_RECOVERY:
49772 			case PERSISTENT_VERSION_STORE_FILEGROUP:
49773 			case IMMEDIATE:
49774 			case NO_WAIT:
49775 			case TARGET_RECOVERY_TIME:
49776 			case SECONDS:
49777 			case HONOR_BROKER_PRIORITY:
49778 			case ERROR_BROKER_CONVERSATIONS:
49779 			case NEW_BROKER:
49780 			case DISABLE_BROKER:
49781 			case ENABLE_BROKER:
49782 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49783 			case READ_COMMITTED_SNAPSHOT:
49784 			case ALLOW_SNAPSHOT_ISOLATION:
49785 			case RECURSIVE_TRIGGERS:
49786 			case QUOTED_IDENTIFIER:
49787 			case NUMERIC_ROUNDABORT:
49788 			case CONCAT_NULL_YIELDS_NULL:
49789 			case COMPATIBILITY_LEVEL:
49790 			case ARITHABORT:
49791 			case ANSI_WARNINGS:
49792 			case ANSI_PADDING:
49793 			case ANSI_NULLS:
49794 			case ANSI_NULL_DEFAULT:
49795 			case PAGE_VERIFY:
49796 			case CHECKSUM:
49797 			case TORN_PAGE_DETECTION:
49798 			case BULK_LOGGED:
49799 			case RECOVERY:
49800 			case TOTAL_EXECUTION_CPU_TIME_MS:
49801 			case TOTAL_COMPILE_CPU_TIME_MS:
49802 			case STALE_CAPTURE_POLICY_THRESHOLD:
49803 			case EXECUTION_COUNT:
49804 			case QUERY_CAPTURE_POLICY:
49805 			case WAIT_STATS_CAPTURE_MODE:
49806 			case MAX_PLANS_PER_QUERY:
49807 			case QUERY_CAPTURE_MODE:
49808 			case SIZE_BASED_CLEANUP_MODE:
49809 			case INTERVAL_LENGTH_MINUTES:
49810 			case MAX_STORAGE_SIZE_MB:
49811 			case DATA_FLUSH_INTERVAL_SECONDS:
49812 			case CLEANUP_POLICY:
49813 			case CUSTOM:
49814 			case STALE_QUERY_THRESHOLD_DAYS:
49815 			case OPERATION_MODE:
49816 			case QUERY_STORE:
49817 			case CURSOR_DEFAULT:
49818 			case GLOBAL:
49819 			case CURSOR_CLOSE_ON_COMMIT:
49820 			case HOURS:
49821 			case CHANGE_RETENTION:
49822 			case AUTO_CLEANUP:
49823 			case CHANGE_TRACKING:
49824 			case AUTOMATIC_TUNING:
49825 			case FORCE_LAST_GOOD_PLAN:
49826 			case AUTO_UPDATE_STATISTICS_ASYNC:
49827 			case AUTO_UPDATE_STATISTICS:
49828 			case AUTO_SHRINK:
49829 			case AUTO_CREATE_STATISTICS:
49830 			case INCREMENTAL:
49831 			case AUTO_CLOSE:
49832 			case DATA_RETENTION:
49833 			case TEMPORAL_HISTORY_RETENTION:
49834 			case EDITION:
49835 			case MIXED_PAGE_ALLOCATION:
49836 			case DISABLED:
49837 			case ALLOWED:
49838 			case HADR:
49839 			case MULTI_USER:
49840 			case RESTRICTED_USER:
49841 			case SINGLE_USER:
49842 			case OFFLINE:
49843 			case EMERGENCY:
49844 			case SUSPEND:
49845 			case DATE_CORRELATION_OPTIMIZATION:
49846 			case ELASTIC_POOL:
49847 			case SERVICE_OBJECTIVE:
49848 			case DATABASE_NAME:
49849 			case ALLOW_CONNECTIONS:
49850 			case GEO:
49851 			case NAMED:
49852 			case DATEFIRST:
49853 			case BACKUP_STORAGE_REDUNDANCY:
49854 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49855 			case SECONDARY:
49856 			case FAILOVER:
49857 			case DEFAULT_FULLTEXT_LANGUAGE:
49858 			case DEFAULT_LANGUAGE:
49859 			case INLINE:
49860 			case NESTED_TRIGGERS:
49861 			case TRANSFORM_NOISE_WORDS:
49862 			case TWO_DIGIT_YEAR_CUTOFF:
49863 			case PERSISTENT_LOG_BUFFER:
49864 			case DIRECTORY_NAME:
49865 			case DATEFORMAT:
49866 			case DELAYED_DURABILITY:
49867 			case AUTHORIZATION:
49868 			case TRANSFER:
49869 			case PROVIDER:
49870 			case SEARCH:
49871 			case MEMBER:
49872 			case IDENTIFIER_:
49873 			case DELIMITED_IDENTIFIER_:
49874 				enterOuterAlt(_localctx, 1);
49875 				{
49876 				setState(6806);
49877 				userName();
49878 				setState(6810);
49879 				_errHandler.sync(this);
49880 				_la = _input.LA(1);
49881 				if (_la==FROM || _la==FOR) {
49882 					{
49883 					setState(6807);
49884 					_la = _input.LA(1);
49885 					if ( !(_la==FROM || _la==FOR) ) {
49886 					_errHandler.recoverInline(this);
49887 					}
49888 					else {
49889 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49890 						_errHandler.reportMatch(this);
49891 						consume();
49892 					}
49893 					setState(6808);
49894 					match(LOGIN);
49895 					setState(6809);
49896 					identifier();
49897 					}
49898 				}
49899 
49900 				}
49901 				break;
49902 			case FROM:
49903 				enterOuterAlt(_localctx, 2);
49904 				{
49905 				setState(6812);
49906 				match(FROM);
49907 				setState(6813);
49908 				match(EXTERNAL);
49909 				setState(6814);
49910 				match(PROVIDER);
49911 				setState(6824);
49912 				_errHandler.sync(this);
49913 				_la = _input.LA(1);
49914 				if (_la==WITH) {
49915 					{
49916 					setState(6815);
49917 					match(WITH);
49918 					setState(6816);
49919 					limitedOptionsList();
49920 					setState(6821);
49921 					_errHandler.sync(this);
49922 					_la = _input.LA(1);
49923 					while (_la==COMMA_) {
49924 						{
49925 						{
49926 						setState(6817);
49927 						match(COMMA_);
49928 						setState(6818);
49929 						limitedOptionsList();
49930 						}
49931 						}
49932 						setState(6823);
49933 						_errHandler.sync(this);
49934 						_la = _input.LA(1);
49935 					}
49936 					}
49937 				}
49938 
49939 				}
49940 				break;
49941 			default:
49942 				throw new NoViableAltException(this);
49943 			}
49944 		}
49945 		catch (RecognitionException re) {
49946 			_localctx.exception = re;
49947 			_errHandler.reportError(this, re);
49948 			_errHandler.recover(this, re);
49949 		}
49950 		finally {
49951 			exitRule();
49952 		}
49953 		return _localctx;
49954 	}
49955 
49956 	public static class CreateUserWithDefaultSchemaContext extends ParserRuleContext {
49957 		public UserNameContext userName() {
49958 			return getRuleContext(UserNameContext.class,0);
49959 		}
49960 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
49961 		public IdentifierContext identifier() {
49962 			return getRuleContext(IdentifierContext.class,0);
49963 		}
49964 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
49965 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49966 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
49967 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49968 		public SchemaNameContext schemaName() {
49969 			return getRuleContext(SchemaNameContext.class,0);
49970 		}
49971 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
49972 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49973 		public CreateUserWithDefaultSchemaContext(ParserRuleContext parent, int invokingState) {
49974 			super(parent, invokingState);
49975 		}
49976 		@Override public int getRuleIndex() { return RULE_createUserWithDefaultSchema; }
49977 		@Override
49978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithDefaultSchema(this);
49980 			else return visitor.visitChildren(this);
49981 		}
49982 	}
49983 
49984 	public final CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() throws RecognitionException {
49985 		CreateUserWithDefaultSchemaContext _localctx = new CreateUserWithDefaultSchemaContext(_ctx, getState());
49986 		enterRule(_localctx, 932, RULE_createUserWithDefaultSchema);
49987 		int _la;
49988 		try {
49989 			enterOuterAlt(_localctx, 1);
49990 			{
49991 			setState(6828);
49992 			userName();
49993 			setState(6834);
49994 			_errHandler.sync(this);
49995 			switch (_input.LA(1)) {
49996 			case FROM:
49997 			case FOR:
49998 				{
49999 				setState(6829);
50000 				_la = _input.LA(1);
50001 				if ( !(_la==FROM || _la==FOR) ) {
50002 				_errHandler.recoverInline(this);
50003 				}
50004 				else {
50005 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50006 					_errHandler.reportMatch(this);
50007 					consume();
50008 				}
50009 				setState(6830);
50010 				match(LOGIN);
50011 				setState(6831);
50012 				identifier();
50013 				}
50014 				break;
50015 			case WITHOUT:
50016 				{
50017 				setState(6832);
50018 				match(WITHOUT);
50019 				setState(6833);
50020 				match(LOGIN);
50021 				}
50022 				break;
50023 			case EOF:
50024 			case SEMI_:
50025 			case WITH:
50026 				break;
50027 			default:
50028 				break;
50029 			}
50030 			setState(6840);
50031 			_errHandler.sync(this);
50032 			_la = _input.LA(1);
50033 			if (_la==WITH) {
50034 				{
50035 				setState(6836);
50036 				match(WITH);
50037 				setState(6837);
50038 				match(DEFAULT_SCHEMA);
50039 				setState(6838);
50040 				match(EQ_);
50041 				setState(6839);
50042 				schemaName();
50043 				}
50044 			}
50045 
50046 			}
50047 		}
50048 		catch (RecognitionException re) {
50049 			_localctx.exception = re;
50050 			_errHandler.reportError(this, re);
50051 			_errHandler.recover(this, re);
50052 		}
50053 		finally {
50054 			exitRule();
50055 		}
50056 		return _localctx;
50057 	}
50058 
50059 	public static class CreateUserWithAzureActiveDirectoryPrincipalClauseContext extends ParserRuleContext {
50060 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
50061 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
50062 		}
50063 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50064 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50065 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50066 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50067 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
50068 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50069 		public SchemaNameContext schemaName() {
50070 			return getRuleContext(SchemaNameContext.class,0);
50071 		}
50072 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
50073 			super(parent, invokingState);
50074 		}
50075 		@Override public int getRuleIndex() { return RULE_createUserWithAzureActiveDirectoryPrincipalClause; }
50076 		@Override
50077 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50078 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithAzureActiveDirectoryPrincipalClause(this);
50079 			else return visitor.visitChildren(this);
50080 		}
50081 	}
50082 
50083 	public final CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() throws RecognitionException {
50084 		CreateUserWithAzureActiveDirectoryPrincipalClauseContext _localctx = new CreateUserWithAzureActiveDirectoryPrincipalClauseContext(_ctx, getState());
50085 		enterRule(_localctx, 934, RULE_createUserWithAzureActiveDirectoryPrincipalClause);
50086 		int _la;
50087 		try {
50088 			enterOuterAlt(_localctx, 1);
50089 			{
50090 			setState(6842);
50091 			azureActiveDirectoryPrincipal();
50092 			setState(6843);
50093 			match(FROM);
50094 			setState(6844);
50095 			match(EXTERNAL);
50096 			setState(6845);
50097 			match(PROVIDER);
50098 			setState(6850);
50099 			_errHandler.sync(this);
50100 			_la = _input.LA(1);
50101 			if (_la==WITH) {
50102 				{
50103 				setState(6846);
50104 				match(WITH);
50105 				setState(6847);
50106 				match(DEFAULT_SCHEMA);
50107 				setState(6848);
50108 				match(EQ_);
50109 				setState(6849);
50110 				schemaName();
50111 				}
50112 			}
50113 
50114 			}
50115 		}
50116 		catch (RecognitionException re) {
50117 			_localctx.exception = re;
50118 			_errHandler.reportError(this, re);
50119 			_errHandler.recover(this, re);
50120 		}
50121 		finally {
50122 			exitRule();
50123 		}
50124 		return _localctx;
50125 	}
50126 
50127 	public static class WindowsPrincipalContext extends ParserRuleContext {
50128 		public UserNameContext userName() {
50129 			return getRuleContext(UserNameContext.class,0);
50130 		}
50131 		public WindowsPrincipalContext(ParserRuleContext parent, int invokingState) {
50132 			super(parent, invokingState);
50133 		}
50134 		@Override public int getRuleIndex() { return RULE_windowsPrincipal; }
50135 		@Override
50136 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50137 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsPrincipal(this);
50138 			else return visitor.visitChildren(this);
50139 		}
50140 	}
50141 
50142 	public final WindowsPrincipalContext windowsPrincipal() throws RecognitionException {
50143 		WindowsPrincipalContext _localctx = new WindowsPrincipalContext(_ctx, getState());
50144 		enterRule(_localctx, 936, RULE_windowsPrincipal);
50145 		try {
50146 			enterOuterAlt(_localctx, 1);
50147 			{
50148 			setState(6852);
50149 			userName();
50150 			}
50151 		}
50152 		catch (RecognitionException re) {
50153 			_localctx.exception = re;
50154 			_errHandler.reportError(this, re);
50155 			_errHandler.recover(this, re);
50156 		}
50157 		finally {
50158 			exitRule();
50159 		}
50160 		return _localctx;
50161 	}
50162 
50163 	public static class AzureActiveDirectoryPrincipalContext extends ParserRuleContext {
50164 		public UserNameContext userName() {
50165 			return getRuleContext(UserNameContext.class,0);
50166 		}
50167 		public AzureActiveDirectoryPrincipalContext(ParserRuleContext parent, int invokingState) {
50168 			super(parent, invokingState);
50169 		}
50170 		@Override public int getRuleIndex() { return RULE_azureActiveDirectoryPrincipal; }
50171 		@Override
50172 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50173 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureActiveDirectoryPrincipal(this);
50174 			else return visitor.visitChildren(this);
50175 		}
50176 	}
50177 
50178 	public final AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() throws RecognitionException {
50179 		AzureActiveDirectoryPrincipalContext _localctx = new AzureActiveDirectoryPrincipalContext(_ctx, getState());
50180 		enterRule(_localctx, 938, RULE_azureActiveDirectoryPrincipal);
50181 		try {
50182 			enterOuterAlt(_localctx, 1);
50183 			{
50184 			setState(6854);
50185 			userName();
50186 			}
50187 		}
50188 		catch (RecognitionException re) {
50189 			_localctx.exception = re;
50190 			_errHandler.reportError(this, re);
50191 			_errHandler.recover(this, re);
50192 		}
50193 		finally {
50194 			exitRule();
50195 		}
50196 		return _localctx;
50197 	}
50198 
50199 	public static class UserNameContext extends ParserRuleContext {
50200 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50201 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50202 		}
50203 		public UserNameContext(ParserRuleContext parent, int invokingState) {
50204 			super(parent, invokingState);
50205 		}
50206 		@Override public int getRuleIndex() { return RULE_userName; }
50207 		@Override
50208 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50209 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUserName(this);
50210 			else return visitor.visitChildren(this);
50211 		}
50212 	}
50213 
50214 	public final UserNameContext userName() throws RecognitionException {
50215 		UserNameContext _localctx = new UserNameContext(_ctx, getState());
50216 		enterRule(_localctx, 940, RULE_userName);
50217 		try {
50218 			enterOuterAlt(_localctx, 1);
50219 			{
50220 			setState(6856);
50221 			ignoredNameIdentifier();
50222 			}
50223 		}
50224 		catch (RecognitionException re) {
50225 			_localctx.exception = re;
50226 			_errHandler.reportError(this, re);
50227 			_errHandler.recover(this, re);
50228 		}
50229 		finally {
50230 			exitRule();
50231 		}
50232 		return _localctx;
50233 	}
50234 
50235 	public static class IgnoredNameIdentifierContext extends ParserRuleContext {
50236 		public List<IdentifierContext> identifier() {
50237 			return getRuleContexts(IdentifierContext.class);
50238 		}
50239 		public IdentifierContext identifier(int i) {
50240 			return getRuleContext(IdentifierContext.class,i);
50241 		}
50242 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
50243 		public IgnoredNameIdentifierContext(ParserRuleContext parent, int invokingState) {
50244 			super(parent, invokingState);
50245 		}
50246 		@Override public int getRuleIndex() { return RULE_ignoredNameIdentifier; }
50247 		@Override
50248 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50249 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredNameIdentifier(this);
50250 			else return visitor.visitChildren(this);
50251 		}
50252 	}
50253 
50254 	public final IgnoredNameIdentifierContext ignoredNameIdentifier() throws RecognitionException {
50255 		IgnoredNameIdentifierContext _localctx = new IgnoredNameIdentifierContext(_ctx, getState());
50256 		enterRule(_localctx, 942, RULE_ignoredNameIdentifier);
50257 		int _la;
50258 		try {
50259 			enterOuterAlt(_localctx, 1);
50260 			{
50261 			setState(6858);
50262 			identifier();
50263 			setState(6861);
50264 			_errHandler.sync(this);
50265 			_la = _input.LA(1);
50266 			if (_la==DOT_) {
50267 				{
50268 				setState(6859);
50269 				match(DOT_);
50270 				setState(6860);
50271 				identifier();
50272 				}
50273 			}
50274 
50275 			}
50276 		}
50277 		catch (RecognitionException re) {
50278 			_localctx.exception = re;
50279 			_errHandler.reportError(this, re);
50280 			_errHandler.recover(this, re);
50281 		}
50282 		finally {
50283 			exitRule();
50284 		}
50285 		return _localctx;
50286 	}
50287 
50288 	public static class DropUserContext extends ParserRuleContext {
50289 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
50290 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
50291 		public UserNameContext userName() {
50292 			return getRuleContext(UserNameContext.class,0);
50293 		}
50294 		public IfExistsContext ifExists() {
50295 			return getRuleContext(IfExistsContext.class,0);
50296 		}
50297 		public DropUserContext(ParserRuleContext parent, int invokingState) {
50298 			super(parent, invokingState);
50299 		}
50300 		@Override public int getRuleIndex() { return RULE_dropUser; }
50301 		@Override
50302 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50303 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropUser(this);
50304 			else return visitor.visitChildren(this);
50305 		}
50306 	}
50307 
50308 	public final DropUserContext dropUser() throws RecognitionException {
50309 		DropUserContext _localctx = new DropUserContext(_ctx, getState());
50310 		enterRule(_localctx, 944, RULE_dropUser);
50311 		int _la;
50312 		try {
50313 			enterOuterAlt(_localctx, 1);
50314 			{
50315 			setState(6863);
50316 			match(DROP);
50317 			setState(6864);
50318 			match(USER);
50319 			setState(6866);
50320 			_errHandler.sync(this);
50321 			_la = _input.LA(1);
50322 			if (_la==IF) {
50323 				{
50324 				setState(6865);
50325 				ifExists();
50326 				}
50327 			}
50328 
50329 			setState(6868);
50330 			userName();
50331 			}
50332 		}
50333 		catch (RecognitionException re) {
50334 			_localctx.exception = re;
50335 			_errHandler.reportError(this, re);
50336 			_errHandler.recover(this, re);
50337 		}
50338 		finally {
50339 			exitRule();
50340 		}
50341 		return _localctx;
50342 	}
50343 
50344 	public static class AlterUserContext extends ParserRuleContext {
50345 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
50346 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
50347 		public UserNameContext userName() {
50348 			return getRuleContext(UserNameContext.class,0);
50349 		}
50350 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50351 		public List<SetItemContext> setItem() {
50352 			return getRuleContexts(SetItemContext.class);
50353 		}
50354 		public SetItemContext setItem(int i) {
50355 			return getRuleContext(SetItemContext.class,i);
50356 		}
50357 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50358 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50359 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50360 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50361 		public TerminalNode COMMA_(int i) {
50362 			return getToken(SQLServerStatementParser.COMMA_, i);
50363 		}
50364 		public AlterUserContext(ParserRuleContext parent, int invokingState) {
50365 			super(parent, invokingState);
50366 		}
50367 		@Override public int getRuleIndex() { return RULE_alterUser; }
50368 		@Override
50369 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50370 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterUser(this);
50371 			else return visitor.visitChildren(this);
50372 		}
50373 	}
50374 
50375 	public final AlterUserContext alterUser() throws RecognitionException {
50376 		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
50377 		enterRule(_localctx, 946, RULE_alterUser);
50378 		int _la;
50379 		try {
50380 			enterOuterAlt(_localctx, 1);
50381 			{
50382 			setState(6870);
50383 			match(ALTER);
50384 			setState(6871);
50385 			match(USER);
50386 			setState(6872);
50387 			userName();
50388 			setState(6885);
50389 			_errHandler.sync(this);
50390 			switch (_input.LA(1)) {
50391 			case WITH:
50392 				{
50393 				setState(6873);
50394 				match(WITH);
50395 				setState(6874);
50396 				setItem();
50397 				setState(6879);
50398 				_errHandler.sync(this);
50399 				_la = _input.LA(1);
50400 				while (_la==COMMA_) {
50401 					{
50402 					{
50403 					setState(6875);
50404 					match(COMMA_);
50405 					setState(6876);
50406 					setItem();
50407 					}
50408 					}
50409 					setState(6881);
50410 					_errHandler.sync(this);
50411 					_la = _input.LA(1);
50412 				}
50413 				}
50414 				break;
50415 			case FROM:
50416 				{
50417 				setState(6882);
50418 				match(FROM);
50419 				setState(6883);
50420 				match(EXTERNAL);
50421 				setState(6884);
50422 				match(PROVIDER);
50423 				}
50424 				break;
50425 			default:
50426 				throw new NoViableAltException(this);
50427 			}
50428 			}
50429 		}
50430 		catch (RecognitionException re) {
50431 			_localctx.exception = re;
50432 			_errHandler.reportError(this, re);
50433 			_errHandler.recover(this, re);
50434 		}
50435 		finally {
50436 			exitRule();
50437 		}
50438 		return _localctx;
50439 	}
50440 
50441 	public static class SetItemContext extends ParserRuleContext {
50442 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
50443 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
50444 		public TerminalNode EQ_(int i) {
50445 			return getToken(SQLServerStatementParser.EQ_, i);
50446 		}
50447 		public UserNameContext userName() {
50448 			return getRuleContext(UserNameContext.class,0);
50449 		}
50450 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
50451 		public SchemaNameContext schemaName() {
50452 			return getRuleContext(SchemaNameContext.class,0);
50453 		}
50454 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
50455 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50456 		public IdentifierContext identifier() {
50457 			return getRuleContext(IdentifierContext.class,0);
50458 		}
50459 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50460 		public List<StringLiteralsContext> stringLiterals() {
50461 			return getRuleContexts(StringLiteralsContext.class);
50462 		}
50463 		public StringLiteralsContext stringLiterals(int i) {
50464 			return getRuleContext(StringLiteralsContext.class,i);
50465 		}
50466 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
50467 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50468 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
50469 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
50470 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
50471 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
50472 		public SetItemContext(ParserRuleContext parent, int invokingState) {
50473 			super(parent, invokingState);
50474 		}
50475 		@Override public int getRuleIndex() { return RULE_setItem; }
50476 		@Override
50477 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50478 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetItem(this);
50479 			else return visitor.visitChildren(this);
50480 		}
50481 	}
50482 
50483 	public final SetItemContext setItem() throws RecognitionException {
50484 		SetItemContext _localctx = new SetItemContext(_ctx, getState());
50485 		enterRule(_localctx, 948, RULE_setItem);
50486 		int _la;
50487 		try {
50488 			setState(6918);
50489 			_errHandler.sync(this);
50490 			switch (_input.LA(1)) {
50491 			case NAME:
50492 				enterOuterAlt(_localctx, 1);
50493 				{
50494 				setState(6887);
50495 				match(NAME);
50496 				setState(6888);
50497 				match(EQ_);
50498 				setState(6889);
50499 				userName();
50500 				}
50501 				break;
50502 			case DEFAULT_SCHEMA:
50503 				enterOuterAlt(_localctx, 2);
50504 				{
50505 				setState(6890);
50506 				match(DEFAULT_SCHEMA);
50507 				setState(6891);
50508 				match(EQ_);
50509 				setState(6894);
50510 				_errHandler.sync(this);
50511 				switch (_input.LA(1)) {
50512 				case TRUNCATE:
50513 				case SCHEMA:
50514 				case COLUMNS:
50515 				case PRECISION:
50516 				case FUNCTION:
50517 				case TRIGGER:
50518 				case CAST:
50519 				case TRIM:
50520 				case SUBSTRING:
50521 				case OFF:
50522 				case GROUP:
50523 				case LIMIT:
50524 				case OFFSET:
50525 				case SAVEPOINT:
50526 				case BOOLEAN:
50527 				case ARRAY:
50528 				case DATE:
50529 				case TIMESTAMP:
50530 				case LOCALTIME:
50531 				case LOCALTIMESTAMP:
50532 				case YEAR:
50533 				case QUARTER:
50534 				case MONTH:
50535 				case WEEK:
50536 				case DAY:
50537 				case SECOND:
50538 				case MICROSECOND:
50539 				case MAX:
50540 				case MIN:
50541 				case SUM:
50542 				case COUNT:
50543 				case AVG:
50544 				case ENABLE:
50545 				case DISABLE:
50546 				case INSTANCE:
50547 				case DO:
50548 				case DEFINER:
50549 				case SQL:
50550 				case CASCADED:
50551 				case LOCAL:
50552 				case NEXT:
50553 				case NAME:
50554 				case INTEGER:
50555 				case TYPE:
50556 				case TEXT:
50557 				case VIEWS:
50558 				case READ_ONLY:
50559 				case DATABASE:
50560 				case RETURNS:
50561 				case DATEPART:
50562 				case PASSWORD:
50563 				case BINARY:
50564 				case HIDDEN_:
50565 				case MOD:
50566 				case PARTITION:
50567 				case PARTITIONS:
50568 				case TOP:
50569 				case ROW:
50570 				case ROWS:
50571 				case XOR:
50572 				case ALWAYS:
50573 				case ROLE:
50574 				case START:
50575 				case ALGORITHM:
50576 				case AUTO:
50577 				case BLOCKERS:
50578 				case CLUSTERED:
50579 				case NONCLUSTERED:
50580 				case COLUMNSTORE:
50581 				case CONTENT:
50582 				case YEARS:
50583 				case MONTHS:
50584 				case WEEKS:
50585 				case DAYS:
50586 				case MINUTES:
50587 				case DENY:
50588 				case DETERMINISTIC:
50589 				case DISTRIBUTION:
50590 				case DOCUMENT:
50591 				case DURABILITY:
50592 				case ENCRYPTED:
50593 				case FILESTREAM:
50594 				case FILETABLE:
50595 				case FILLFACTOR:
50596 				case FOLLOWING:
50597 				case HASH:
50598 				case HEAP:
50599 				case INBOUND:
50600 				case OUTBOUND:
50601 				case UNBOUNDED:
50602 				case INFINITE:
50603 				case LOGIN:
50604 				case MASKED:
50605 				case MAXDOP:
50606 				case MOVE:
50607 				case NOCHECK:
50608 				case OBJECT:
50609 				case ONLINE:
50610 				case OVER:
50611 				case PAGE:
50612 				case PAUSED:
50613 				case PERIOD:
50614 				case PERSISTED:
50615 				case PRECEDING:
50616 				case RANDOMIZED:
50617 				case RANGE:
50618 				case REBUILD:
50619 				case REPLICATE:
50620 				case REPLICATION:
50621 				case RESUMABLE:
50622 				case ROWGUIDCOL:
50623 				case SAVE:
50624 				case SELF:
50625 				case SPARSE:
50626 				case SWITCH:
50627 				case TRAN:
50628 				case TRANCOUNT:
50629 				case CONTROL:
50630 				case CONCAT:
50631 				case TAKE:
50632 				case OWNERSHIP:
50633 				case DEFINITION:
50634 				case APPLICATION:
50635 				case ASSEMBLY:
50636 				case SYMMETRIC:
50637 				case ASYMMETRIC:
50638 				case SERVER:
50639 				case RECEIVE:
50640 				case CHANGE:
50641 				case TRACE:
50642 				case TRACKING:
50643 				case RESOURCES:
50644 				case SETTINGS:
50645 				case STATE:
50646 				case AVAILABILITY:
50647 				case CREDENTIAL:
50648 				case ENDPOINT:
50649 				case EVENT:
50650 				case NOTIFICATION:
50651 				case LINKED:
50652 				case AUDIT:
50653 				case DDL:
50654 				case XML:
50655 				case IMPERSONATE:
50656 				case SECURABLES:
50657 				case AUTHENTICATE:
50658 				case EXTERNAL:
50659 				case ACCESS:
50660 				case ADMINISTER:
50661 				case BULK:
50662 				case OPERATIONS:
50663 				case UNSAFE:
50664 				case SHUTDOWN:
50665 				case SCOPED:
50666 				case CONFIGURATION:
50667 				case DATASPACE:
50668 				case SERVICE:
50669 				case CERTIFICATE:
50670 				case CONTRACT:
50671 				case ENCRYPTION:
50672 				case MASTER:
50673 				case DATA:
50674 				case SOURCE:
50675 				case FILE:
50676 				case FORMAT:
50677 				case LIBRARY:
50678 				case FULLTEXT:
50679 				case MASK:
50680 				case UNMASK:
50681 				case MESSAGE:
50682 				case REMOTE:
50683 				case BINDING:
50684 				case ROUTE:
50685 				case SECURITY:
50686 				case POLICY:
50687 				case AGGREGATE:
50688 				case QUEUE:
50689 				case RULE:
50690 				case SYNONYM:
50691 				case COLLECTION:
50692 				case SCRIPT:
50693 				case KILL:
50694 				case BACKUP:
50695 				case LOG:
50696 				case SHOWPLAN:
50697 				case SUBSCRIBE:
50698 				case QUERY:
50699 				case NOTIFICATIONS:
50700 				case CHECKPOINT:
50701 				case SEQUENCE:
50702 				case ABORT_AFTER_WAIT:
50703 				case ALLOW_PAGE_LOCKS:
50704 				case ALLOW_ROW_LOCKS:
50705 				case ALL_SPARSE_COLUMNS:
50706 				case BUCKET_COUNT:
50707 				case COLUMNSTORE_ARCHIVE:
50708 				case COLUMN_ENCRYPTION_KEY:
50709 				case COLUMN_SET:
50710 				case COMPRESSION_DELAY:
50711 				case DATABASE_DEAULT:
50712 				case DATA_COMPRESSION:
50713 				case DATA_CONSISTENCY_CHECK:
50714 				case ENCRYPTION_TYPE:
50715 				case SYSTEM_TIME:
50716 				case SYSTEM_VERSIONING:
50717 				case TEXTIMAGE_ON:
50718 				case WAIT_AT_LOW_PRIORITY:
50719 				case STATISTICS_INCREMENTAL:
50720 				case STATISTICS_NORECOMPUTE:
50721 				case ROUND_ROBIN:
50722 				case SCHEMA_AND_DATA:
50723 				case SCHEMA_ONLY:
50724 				case SORT_IN_TEMPDB:
50725 				case IGNORE_DUP_KEY:
50726 				case IMPLICIT_TRANSACTIONS:
50727 				case MAX_DURATION:
50728 				case MEMORY_OPTIMIZED:
50729 				case MIGRATION_STATE:
50730 				case PAD_INDEX:
50731 				case REMOTE_DATA_ARCHIVE:
50732 				case FILESTREAM_ON:
50733 				case FILETABLE_COLLATE_FILENAME:
50734 				case FILETABLE_DIRECTORY:
50735 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
50736 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
50737 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
50738 				case FILTER_PREDICATE:
50739 				case HISTORY_RETENTION_PERIOD:
50740 				case HISTORY_TABLE:
50741 				case LOCK_ESCALATION:
50742 				case DROP_EXISTING:
50743 				case ROW_NUMBER:
50744 				case FIRST:
50745 				case DATETIME2:
50746 				case OUTPUT:
50747 				case INSERTED:
50748 				case DELETED:
50749 				case FILENAME:
50750 				case SIZE:
50751 				case MAXSIZE:
50752 				case FILEGROWTH:
50753 				case UNLIMITED:
50754 				case KB:
50755 				case MB:
50756 				case GB:
50757 				case TB:
50758 				case CONTAINS:
50759 				case MEMORY_OPTIMIZED_DATA:
50760 				case FILEGROUP:
50761 				case NON_TRANSACTED_ACCESS:
50762 				case DB_CHAINING:
50763 				case TRUSTWORTHY:
50764 				case FORWARD_ONLY:
50765 				case KEYSET:
50766 				case FAST_FORWARD:
50767 				case SCROLL_LOCKS:
50768 				case OPTIMISTIC:
50769 				case TYPE_WARNING:
50770 				case SCHEMABINDING:
50771 				case CALLER:
50772 				case INPUT:
50773 				case OWNER:
50774 				case SNAPSHOT:
50775 				case REPEATABLE:
50776 				case SERIALIZABLE:
50777 				case NATIVE_COMPILATION:
50778 				case VIEW_METADATA:
50779 				case INSTEAD:
50780 				case APPEND:
50781 				case INCREMENT:
50782 				case CACHE:
50783 				case MINVALUE:
50784 				case MAXVALUE:
50785 				case RESTART:
50786 				case LOB_COMPACTION:
50787 				case COMPRESS_ALL_ROW_GROUPS:
50788 				case REORGANIZE:
50789 				case RESUME:
50790 				case PAUSE:
50791 				case ABORT:
50792 				case ACCELERATED_DATABASE_RECOVERY:
50793 				case PERSISTENT_VERSION_STORE_FILEGROUP:
50794 				case IMMEDIATE:
50795 				case NO_WAIT:
50796 				case TARGET_RECOVERY_TIME:
50797 				case SECONDS:
50798 				case HONOR_BROKER_PRIORITY:
50799 				case ERROR_BROKER_CONVERSATIONS:
50800 				case NEW_BROKER:
50801 				case DISABLE_BROKER:
50802 				case ENABLE_BROKER:
50803 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
50804 				case READ_COMMITTED_SNAPSHOT:
50805 				case ALLOW_SNAPSHOT_ISOLATION:
50806 				case RECURSIVE_TRIGGERS:
50807 				case QUOTED_IDENTIFIER:
50808 				case NUMERIC_ROUNDABORT:
50809 				case CONCAT_NULL_YIELDS_NULL:
50810 				case COMPATIBILITY_LEVEL:
50811 				case ARITHABORT:
50812 				case ANSI_WARNINGS:
50813 				case ANSI_PADDING:
50814 				case ANSI_NULLS:
50815 				case ANSI_NULL_DEFAULT:
50816 				case PAGE_VERIFY:
50817 				case CHECKSUM:
50818 				case TORN_PAGE_DETECTION:
50819 				case BULK_LOGGED:
50820 				case RECOVERY:
50821 				case TOTAL_EXECUTION_CPU_TIME_MS:
50822 				case TOTAL_COMPILE_CPU_TIME_MS:
50823 				case STALE_CAPTURE_POLICY_THRESHOLD:
50824 				case EXECUTION_COUNT:
50825 				case QUERY_CAPTURE_POLICY:
50826 				case WAIT_STATS_CAPTURE_MODE:
50827 				case MAX_PLANS_PER_QUERY:
50828 				case QUERY_CAPTURE_MODE:
50829 				case SIZE_BASED_CLEANUP_MODE:
50830 				case INTERVAL_LENGTH_MINUTES:
50831 				case MAX_STORAGE_SIZE_MB:
50832 				case DATA_FLUSH_INTERVAL_SECONDS:
50833 				case CLEANUP_POLICY:
50834 				case CUSTOM:
50835 				case STALE_QUERY_THRESHOLD_DAYS:
50836 				case OPERATION_MODE:
50837 				case QUERY_STORE:
50838 				case CURSOR_DEFAULT:
50839 				case GLOBAL:
50840 				case CURSOR_CLOSE_ON_COMMIT:
50841 				case HOURS:
50842 				case CHANGE_RETENTION:
50843 				case AUTO_CLEANUP:
50844 				case CHANGE_TRACKING:
50845 				case AUTOMATIC_TUNING:
50846 				case FORCE_LAST_GOOD_PLAN:
50847 				case AUTO_UPDATE_STATISTICS_ASYNC:
50848 				case AUTO_UPDATE_STATISTICS:
50849 				case AUTO_SHRINK:
50850 				case AUTO_CREATE_STATISTICS:
50851 				case INCREMENTAL:
50852 				case AUTO_CLOSE:
50853 				case DATA_RETENTION:
50854 				case TEMPORAL_HISTORY_RETENTION:
50855 				case EDITION:
50856 				case MIXED_PAGE_ALLOCATION:
50857 				case DISABLED:
50858 				case ALLOWED:
50859 				case HADR:
50860 				case MULTI_USER:
50861 				case RESTRICTED_USER:
50862 				case SINGLE_USER:
50863 				case OFFLINE:
50864 				case EMERGENCY:
50865 				case SUSPEND:
50866 				case DATE_CORRELATION_OPTIMIZATION:
50867 				case ELASTIC_POOL:
50868 				case SERVICE_OBJECTIVE:
50869 				case DATABASE_NAME:
50870 				case ALLOW_CONNECTIONS:
50871 				case GEO:
50872 				case NAMED:
50873 				case DATEFIRST:
50874 				case BACKUP_STORAGE_REDUNDANCY:
50875 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
50876 				case SECONDARY:
50877 				case FAILOVER:
50878 				case DEFAULT_FULLTEXT_LANGUAGE:
50879 				case DEFAULT_LANGUAGE:
50880 				case INLINE:
50881 				case NESTED_TRIGGERS:
50882 				case TRANSFORM_NOISE_WORDS:
50883 				case TWO_DIGIT_YEAR_CUTOFF:
50884 				case PERSISTENT_LOG_BUFFER:
50885 				case DIRECTORY_NAME:
50886 				case DATEFORMAT:
50887 				case DELAYED_DURABILITY:
50888 				case AUTHORIZATION:
50889 				case TRANSFER:
50890 				case PROVIDER:
50891 				case SEARCH:
50892 				case MEMBER:
50893 				case IDENTIFIER_:
50894 				case DELIMITED_IDENTIFIER_:
50895 					{
50896 					setState(6892);
50897 					schemaName();
50898 					}
50899 					break;
50900 				case NULL:
50901 					{
50902 					setState(6893);
50903 					match(NULL);
50904 					}
50905 					break;
50906 				default:
50907 					throw new NoViableAltException(this);
50908 				}
50909 				}
50910 				break;
50911 			case LOGIN:
50912 				enterOuterAlt(_localctx, 3);
50913 				{
50914 				setState(6896);
50915 				match(LOGIN);
50916 				setState(6897);
50917 				match(EQ_);
50918 				setState(6898);
50919 				identifier();
50920 				}
50921 				break;
50922 			case PASSWORD:
50923 				enterOuterAlt(_localctx, 4);
50924 				{
50925 				setState(6899);
50926 				match(PASSWORD);
50927 				setState(6900);
50928 				match(EQ_);
50929 				setState(6901);
50930 				stringLiterals();
50931 				setState(6905);
50932 				_errHandler.sync(this);
50933 				_la = _input.LA(1);
50934 				if (_la==OLD_PASSWORD) {
50935 					{
50936 					setState(6902);
50937 					match(OLD_PASSWORD);
50938 					setState(6903);
50939 					match(EQ_);
50940 					setState(6904);
50941 					stringLiterals();
50942 					}
50943 				}
50944 
50945 				}
50946 				break;
50947 			case DEFAULT_LANGUAGE:
50948 				enterOuterAlt(_localctx, 5);
50949 				{
50950 				setState(6907);
50951 				match(DEFAULT_LANGUAGE);
50952 				setState(6908);
50953 				match(EQ_);
50954 				setState(6911);
50955 				_errHandler.sync(this);
50956 				switch (_input.LA(1)) {
50957 				case NONE:
50958 					{
50959 					setState(6909);
50960 					match(NONE);
50961 					}
50962 					break;
50963 				case TRUNCATE:
50964 				case SCHEMA:
50965 				case COLUMNS:
50966 				case PRECISION:
50967 				case FUNCTION:
50968 				case TRIGGER:
50969 				case CAST:
50970 				case TRIM:
50971 				case SUBSTRING:
50972 				case OFF:
50973 				case GROUP:
50974 				case LIMIT:
50975 				case OFFSET:
50976 				case SAVEPOINT:
50977 				case BOOLEAN:
50978 				case ARRAY:
50979 				case DATE:
50980 				case TIMESTAMP:
50981 				case LOCALTIME:
50982 				case LOCALTIMESTAMP:
50983 				case YEAR:
50984 				case QUARTER:
50985 				case MONTH:
50986 				case WEEK:
50987 				case DAY:
50988 				case SECOND:
50989 				case MICROSECOND:
50990 				case MAX:
50991 				case MIN:
50992 				case SUM:
50993 				case COUNT:
50994 				case AVG:
50995 				case ENABLE:
50996 				case DISABLE:
50997 				case INSTANCE:
50998 				case DO:
50999 				case DEFINER:
51000 				case SQL:
51001 				case CASCADED:
51002 				case LOCAL:
51003 				case NEXT:
51004 				case NAME:
51005 				case INTEGER:
51006 				case TYPE:
51007 				case TEXT:
51008 				case VIEWS:
51009 				case READ_ONLY:
51010 				case DATABASE:
51011 				case RETURNS:
51012 				case DATEPART:
51013 				case PASSWORD:
51014 				case BINARY:
51015 				case HIDDEN_:
51016 				case MOD:
51017 				case PARTITION:
51018 				case PARTITIONS:
51019 				case TOP:
51020 				case ROW:
51021 				case ROWS:
51022 				case XOR:
51023 				case ALWAYS:
51024 				case ROLE:
51025 				case START:
51026 				case ALGORITHM:
51027 				case AUTO:
51028 				case BLOCKERS:
51029 				case CLUSTERED:
51030 				case NONCLUSTERED:
51031 				case COLUMNSTORE:
51032 				case CONTENT:
51033 				case YEARS:
51034 				case MONTHS:
51035 				case WEEKS:
51036 				case DAYS:
51037 				case MINUTES:
51038 				case DENY:
51039 				case DETERMINISTIC:
51040 				case DISTRIBUTION:
51041 				case DOCUMENT:
51042 				case DURABILITY:
51043 				case ENCRYPTED:
51044 				case FILESTREAM:
51045 				case FILETABLE:
51046 				case FILLFACTOR:
51047 				case FOLLOWING:
51048 				case HASH:
51049 				case HEAP:
51050 				case INBOUND:
51051 				case OUTBOUND:
51052 				case UNBOUNDED:
51053 				case INFINITE:
51054 				case LOGIN:
51055 				case MASKED:
51056 				case MAXDOP:
51057 				case MOVE:
51058 				case NOCHECK:
51059 				case OBJECT:
51060 				case ONLINE:
51061 				case OVER:
51062 				case PAGE:
51063 				case PAUSED:
51064 				case PERIOD:
51065 				case PERSISTED:
51066 				case PRECEDING:
51067 				case RANDOMIZED:
51068 				case RANGE:
51069 				case REBUILD:
51070 				case REPLICATE:
51071 				case REPLICATION:
51072 				case RESUMABLE:
51073 				case ROWGUIDCOL:
51074 				case SAVE:
51075 				case SELF:
51076 				case SPARSE:
51077 				case SWITCH:
51078 				case TRAN:
51079 				case TRANCOUNT:
51080 				case CONTROL:
51081 				case CONCAT:
51082 				case TAKE:
51083 				case OWNERSHIP:
51084 				case DEFINITION:
51085 				case APPLICATION:
51086 				case ASSEMBLY:
51087 				case SYMMETRIC:
51088 				case ASYMMETRIC:
51089 				case SERVER:
51090 				case RECEIVE:
51091 				case CHANGE:
51092 				case TRACE:
51093 				case TRACKING:
51094 				case RESOURCES:
51095 				case SETTINGS:
51096 				case STATE:
51097 				case AVAILABILITY:
51098 				case CREDENTIAL:
51099 				case ENDPOINT:
51100 				case EVENT:
51101 				case NOTIFICATION:
51102 				case LINKED:
51103 				case AUDIT:
51104 				case DDL:
51105 				case XML:
51106 				case IMPERSONATE:
51107 				case SECURABLES:
51108 				case AUTHENTICATE:
51109 				case EXTERNAL:
51110 				case ACCESS:
51111 				case ADMINISTER:
51112 				case BULK:
51113 				case OPERATIONS:
51114 				case UNSAFE:
51115 				case SHUTDOWN:
51116 				case SCOPED:
51117 				case CONFIGURATION:
51118 				case DATASPACE:
51119 				case SERVICE:
51120 				case CERTIFICATE:
51121 				case CONTRACT:
51122 				case ENCRYPTION:
51123 				case MASTER:
51124 				case DATA:
51125 				case SOURCE:
51126 				case FILE:
51127 				case FORMAT:
51128 				case LIBRARY:
51129 				case FULLTEXT:
51130 				case MASK:
51131 				case UNMASK:
51132 				case MESSAGE:
51133 				case REMOTE:
51134 				case BINDING:
51135 				case ROUTE:
51136 				case SECURITY:
51137 				case POLICY:
51138 				case AGGREGATE:
51139 				case QUEUE:
51140 				case RULE:
51141 				case SYNONYM:
51142 				case COLLECTION:
51143 				case SCRIPT:
51144 				case KILL:
51145 				case BACKUP:
51146 				case LOG:
51147 				case SHOWPLAN:
51148 				case SUBSCRIBE:
51149 				case QUERY:
51150 				case NOTIFICATIONS:
51151 				case CHECKPOINT:
51152 				case SEQUENCE:
51153 				case ABORT_AFTER_WAIT:
51154 				case ALLOW_PAGE_LOCKS:
51155 				case ALLOW_ROW_LOCKS:
51156 				case ALL_SPARSE_COLUMNS:
51157 				case BUCKET_COUNT:
51158 				case COLUMNSTORE_ARCHIVE:
51159 				case COLUMN_ENCRYPTION_KEY:
51160 				case COLUMN_SET:
51161 				case COMPRESSION_DELAY:
51162 				case DATABASE_DEAULT:
51163 				case DATA_COMPRESSION:
51164 				case DATA_CONSISTENCY_CHECK:
51165 				case ENCRYPTION_TYPE:
51166 				case SYSTEM_TIME:
51167 				case SYSTEM_VERSIONING:
51168 				case TEXTIMAGE_ON:
51169 				case WAIT_AT_LOW_PRIORITY:
51170 				case STATISTICS_INCREMENTAL:
51171 				case STATISTICS_NORECOMPUTE:
51172 				case ROUND_ROBIN:
51173 				case SCHEMA_AND_DATA:
51174 				case SCHEMA_ONLY:
51175 				case SORT_IN_TEMPDB:
51176 				case IGNORE_DUP_KEY:
51177 				case IMPLICIT_TRANSACTIONS:
51178 				case MAX_DURATION:
51179 				case MEMORY_OPTIMIZED:
51180 				case MIGRATION_STATE:
51181 				case PAD_INDEX:
51182 				case REMOTE_DATA_ARCHIVE:
51183 				case FILESTREAM_ON:
51184 				case FILETABLE_COLLATE_FILENAME:
51185 				case FILETABLE_DIRECTORY:
51186 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
51187 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
51188 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
51189 				case FILTER_PREDICATE:
51190 				case HISTORY_RETENTION_PERIOD:
51191 				case HISTORY_TABLE:
51192 				case LOCK_ESCALATION:
51193 				case DROP_EXISTING:
51194 				case ROW_NUMBER:
51195 				case FIRST:
51196 				case DATETIME2:
51197 				case OUTPUT:
51198 				case INSERTED:
51199 				case DELETED:
51200 				case FILENAME:
51201 				case SIZE:
51202 				case MAXSIZE:
51203 				case FILEGROWTH:
51204 				case UNLIMITED:
51205 				case KB:
51206 				case MB:
51207 				case GB:
51208 				case TB:
51209 				case CONTAINS:
51210 				case MEMORY_OPTIMIZED_DATA:
51211 				case FILEGROUP:
51212 				case NON_TRANSACTED_ACCESS:
51213 				case DB_CHAINING:
51214 				case TRUSTWORTHY:
51215 				case FORWARD_ONLY:
51216 				case KEYSET:
51217 				case FAST_FORWARD:
51218 				case SCROLL_LOCKS:
51219 				case OPTIMISTIC:
51220 				case TYPE_WARNING:
51221 				case SCHEMABINDING:
51222 				case CALLER:
51223 				case INPUT:
51224 				case OWNER:
51225 				case SNAPSHOT:
51226 				case REPEATABLE:
51227 				case SERIALIZABLE:
51228 				case NATIVE_COMPILATION:
51229 				case VIEW_METADATA:
51230 				case INSTEAD:
51231 				case APPEND:
51232 				case INCREMENT:
51233 				case CACHE:
51234 				case MINVALUE:
51235 				case MAXVALUE:
51236 				case RESTART:
51237 				case LOB_COMPACTION:
51238 				case COMPRESS_ALL_ROW_GROUPS:
51239 				case REORGANIZE:
51240 				case RESUME:
51241 				case PAUSE:
51242 				case ABORT:
51243 				case ACCELERATED_DATABASE_RECOVERY:
51244 				case PERSISTENT_VERSION_STORE_FILEGROUP:
51245 				case IMMEDIATE:
51246 				case NO_WAIT:
51247 				case TARGET_RECOVERY_TIME:
51248 				case SECONDS:
51249 				case HONOR_BROKER_PRIORITY:
51250 				case ERROR_BROKER_CONVERSATIONS:
51251 				case NEW_BROKER:
51252 				case DISABLE_BROKER:
51253 				case ENABLE_BROKER:
51254 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
51255 				case READ_COMMITTED_SNAPSHOT:
51256 				case ALLOW_SNAPSHOT_ISOLATION:
51257 				case RECURSIVE_TRIGGERS:
51258 				case QUOTED_IDENTIFIER:
51259 				case NUMERIC_ROUNDABORT:
51260 				case CONCAT_NULL_YIELDS_NULL:
51261 				case COMPATIBILITY_LEVEL:
51262 				case ARITHABORT:
51263 				case ANSI_WARNINGS:
51264 				case ANSI_PADDING:
51265 				case ANSI_NULLS:
51266 				case ANSI_NULL_DEFAULT:
51267 				case PAGE_VERIFY:
51268 				case CHECKSUM:
51269 				case TORN_PAGE_DETECTION:
51270 				case BULK_LOGGED:
51271 				case RECOVERY:
51272 				case TOTAL_EXECUTION_CPU_TIME_MS:
51273 				case TOTAL_COMPILE_CPU_TIME_MS:
51274 				case STALE_CAPTURE_POLICY_THRESHOLD:
51275 				case EXECUTION_COUNT:
51276 				case QUERY_CAPTURE_POLICY:
51277 				case WAIT_STATS_CAPTURE_MODE:
51278 				case MAX_PLANS_PER_QUERY:
51279 				case QUERY_CAPTURE_MODE:
51280 				case SIZE_BASED_CLEANUP_MODE:
51281 				case INTERVAL_LENGTH_MINUTES:
51282 				case MAX_STORAGE_SIZE_MB:
51283 				case DATA_FLUSH_INTERVAL_SECONDS:
51284 				case CLEANUP_POLICY:
51285 				case CUSTOM:
51286 				case STALE_QUERY_THRESHOLD_DAYS:
51287 				case OPERATION_MODE:
51288 				case QUERY_STORE:
51289 				case CURSOR_DEFAULT:
51290 				case GLOBAL:
51291 				case CURSOR_CLOSE_ON_COMMIT:
51292 				case HOURS:
51293 				case CHANGE_RETENTION:
51294 				case AUTO_CLEANUP:
51295 				case CHANGE_TRACKING:
51296 				case AUTOMATIC_TUNING:
51297 				case FORCE_LAST_GOOD_PLAN:
51298 				case AUTO_UPDATE_STATISTICS_ASYNC:
51299 				case AUTO_UPDATE_STATISTICS:
51300 				case AUTO_SHRINK:
51301 				case AUTO_CREATE_STATISTICS:
51302 				case INCREMENTAL:
51303 				case AUTO_CLOSE:
51304 				case DATA_RETENTION:
51305 				case TEMPORAL_HISTORY_RETENTION:
51306 				case EDITION:
51307 				case MIXED_PAGE_ALLOCATION:
51308 				case DISABLED:
51309 				case ALLOWED:
51310 				case HADR:
51311 				case MULTI_USER:
51312 				case RESTRICTED_USER:
51313 				case SINGLE_USER:
51314 				case OFFLINE:
51315 				case EMERGENCY:
51316 				case SUSPEND:
51317 				case DATE_CORRELATION_OPTIMIZATION:
51318 				case ELASTIC_POOL:
51319 				case SERVICE_OBJECTIVE:
51320 				case DATABASE_NAME:
51321 				case ALLOW_CONNECTIONS:
51322 				case GEO:
51323 				case NAMED:
51324 				case DATEFIRST:
51325 				case BACKUP_STORAGE_REDUNDANCY:
51326 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
51327 				case SECONDARY:
51328 				case FAILOVER:
51329 				case DEFAULT_FULLTEXT_LANGUAGE:
51330 				case DEFAULT_LANGUAGE:
51331 				case INLINE:
51332 				case NESTED_TRIGGERS:
51333 				case TRANSFORM_NOISE_WORDS:
51334 				case TWO_DIGIT_YEAR_CUTOFF:
51335 				case PERSISTENT_LOG_BUFFER:
51336 				case DIRECTORY_NAME:
51337 				case DATEFORMAT:
51338 				case DELAYED_DURABILITY:
51339 				case AUTHORIZATION:
51340 				case TRANSFER:
51341 				case PROVIDER:
51342 				case SEARCH:
51343 				case MEMBER:
51344 				case IDENTIFIER_:
51345 				case DELIMITED_IDENTIFIER_:
51346 					{
51347 					setState(6910);
51348 					identifier();
51349 					}
51350 					break;
51351 				default:
51352 					throw new NoViableAltException(this);
51353 				}
51354 				}
51355 				break;
51356 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
51357 				enterOuterAlt(_localctx, 6);
51358 				{
51359 				setState(6913);
51360 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
51361 				setState(6914);
51362 				match(EQ_);
51363 				setState(6916);
51364 				_errHandler.sync(this);
51365 				_la = _input.LA(1);
51366 				if (_la==ON || _la==OFF) {
51367 					{
51368 					setState(6915);
51369 					_la = _input.LA(1);
51370 					if ( !(_la==ON || _la==OFF) ) {
51371 					_errHandler.recoverInline(this);
51372 					}
51373 					else {
51374 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51375 						_errHandler.reportMatch(this);
51376 						consume();
51377 					}
51378 					}
51379 				}
51380 
51381 				}
51382 				break;
51383 			default:
51384 				throw new NoViableAltException(this);
51385 			}
51386 		}
51387 		catch (RecognitionException re) {
51388 			_localctx.exception = re;
51389 			_errHandler.reportError(this, re);
51390 			_errHandler.recover(this, re);
51391 		}
51392 		finally {
51393 			exitRule();
51394 		}
51395 		return _localctx;
51396 	}
51397 
51398 	public static class CreateRoleContext extends ParserRuleContext {
51399 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
51400 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
51401 		public List<NameContext> name() {
51402 			return getRuleContexts(NameContext.class);
51403 		}
51404 		public NameContext name(int i) {
51405 			return getRuleContext(NameContext.class,i);
51406 		}
51407 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
51408 		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
51409 			super(parent, invokingState);
51410 		}
51411 		@Override public int getRuleIndex() { return RULE_createRole; }
51412 		@Override
51413 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51414 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRole(this);
51415 			else return visitor.visitChildren(this);
51416 		}
51417 	}
51418 
51419 	public final CreateRoleContext createRole() throws RecognitionException {
51420 		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
51421 		enterRule(_localctx, 950, RULE_createRole);
51422 		int _la;
51423 		try {
51424 			enterOuterAlt(_localctx, 1);
51425 			{
51426 			setState(6920);
51427 			match(CREATE);
51428 			setState(6921);
51429 			match(ROLE);
51430 			setState(6922);
51431 			name();
51432 			setState(6925);
51433 			_errHandler.sync(this);
51434 			_la = _input.LA(1);
51435 			if (_la==AUTHORIZATION) {
51436 				{
51437 				setState(6923);
51438 				match(AUTHORIZATION);
51439 				setState(6924);
51440 				name();
51441 				}
51442 			}
51443 
51444 			}
51445 		}
51446 		catch (RecognitionException re) {
51447 			_localctx.exception = re;
51448 			_errHandler.reportError(this, re);
51449 			_errHandler.recover(this, re);
51450 		}
51451 		finally {
51452 			exitRule();
51453 		}
51454 		return _localctx;
51455 	}
51456 
51457 	public static class DropRoleContext extends ParserRuleContext {
51458 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51459 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
51460 		public NameContext name() {
51461 			return getRuleContext(NameContext.class,0);
51462 		}
51463 		public IfExistsContext ifExists() {
51464 			return getRuleContext(IfExistsContext.class,0);
51465 		}
51466 		public DropRoleContext(ParserRuleContext parent, int invokingState) {
51467 			super(parent, invokingState);
51468 		}
51469 		@Override public int getRuleIndex() { return RULE_dropRole; }
51470 		@Override
51471 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51472 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropRole(this);
51473 			else return visitor.visitChildren(this);
51474 		}
51475 	}
51476 
51477 	public final DropRoleContext dropRole() throws RecognitionException {
51478 		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
51479 		enterRule(_localctx, 952, RULE_dropRole);
51480 		int _la;
51481 		try {
51482 			enterOuterAlt(_localctx, 1);
51483 			{
51484 			setState(6927);
51485 			match(DROP);
51486 			setState(6928);
51487 			match(ROLE);
51488 			setState(6930);
51489 			_errHandler.sync(this);
51490 			_la = _input.LA(1);
51491 			if (_la==IF) {
51492 				{
51493 				setState(6929);
51494 				ifExists();
51495 				}
51496 			}
51497 
51498 			setState(6932);
51499 			name();
51500 			}
51501 		}
51502 		catch (RecognitionException re) {
51503 			_localctx.exception = re;
51504 			_errHandler.reportError(this, re);
51505 			_errHandler.recover(this, re);
51506 		}
51507 		finally {
51508 			exitRule();
51509 		}
51510 		return _localctx;
51511 	}
51512 
51513 	public static class AlterRoleContext extends ParserRuleContext {
51514 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
51515 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
51516 		public List<NameContext> name() {
51517 			return getRuleContexts(NameContext.class);
51518 		}
51519 		public NameContext name(int i) {
51520 			return getRuleContext(NameContext.class,i);
51521 		}
51522 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
51523 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
51524 		public PrincipalContext principal() {
51525 			return getRuleContext(PrincipalContext.class,0);
51526 		}
51527 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51528 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51529 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
51530 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51531 		public AlterRoleContext(ParserRuleContext parent, int invokingState) {
51532 			super(parent, invokingState);
51533 		}
51534 		@Override public int getRuleIndex() { return RULE_alterRole; }
51535 		@Override
51536 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51537 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterRole(this);
51538 			else return visitor.visitChildren(this);
51539 		}
51540 	}
51541 
51542 	public final AlterRoleContext alterRole() throws RecognitionException {
51543 		AlterRoleContext _localctx = new AlterRoleContext(_ctx, getState());
51544 		enterRule(_localctx, 954, RULE_alterRole);
51545 		try {
51546 			enterOuterAlt(_localctx, 1);
51547 			{
51548 			setState(6934);
51549 			match(ALTER);
51550 			setState(6935);
51551 			match(ROLE);
51552 			setState(6936);
51553 			name();
51554 			setState(6947);
51555 			_errHandler.sync(this);
51556 			switch (_input.LA(1)) {
51557 			case ADD:
51558 				{
51559 				setState(6937);
51560 				match(ADD);
51561 				setState(6938);
51562 				match(MEMBER);
51563 				setState(6939);
51564 				principal();
51565 				}
51566 				break;
51567 			case DROP:
51568 				{
51569 				setState(6940);
51570 				match(DROP);
51571 				setState(6941);
51572 				match(MEMBER);
51573 				setState(6942);
51574 				principal();
51575 				}
51576 				break;
51577 			case WITH:
51578 				{
51579 				setState(6943);
51580 				match(WITH);
51581 				setState(6944);
51582 				match(NAME);
51583 				setState(6945);
51584 				match(EQ_);
51585 				setState(6946);
51586 				name();
51587 				}
51588 				break;
51589 			default:
51590 				throw new NoViableAltException(this);
51591 			}
51592 			}
51593 		}
51594 		catch (RecognitionException re) {
51595 			_localctx.exception = re;
51596 			_errHandler.reportError(this, re);
51597 			_errHandler.recover(this, re);
51598 		}
51599 		finally {
51600 			exitRule();
51601 		}
51602 		return _localctx;
51603 	}
51604 
51605 	public static class CreateLoginContext extends ParserRuleContext {
51606 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
51607 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
51608 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
51609 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
51610 		}
51611 		public CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() {
51612 			return getRuleContext(CreateLoginForSQLServerClauseContext.class,0);
51613 		}
51614 		public CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() {
51615 			return getRuleContext(CreateLoginForAzureSQLDatabaseClauseContext.class,0);
51616 		}
51617 		public CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() {
51618 			return getRuleContext(CreateLoginForAzureManagedInstanceClauseContext.class,0);
51619 		}
51620 		public CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() {
51621 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsClauseContext.class,0);
51622 		}
51623 		public CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() {
51624 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemClauseContext.class,0);
51625 		}
51626 		public CreateLoginContext(ParserRuleContext parent, int invokingState) {
51627 			super(parent, invokingState);
51628 		}
51629 		@Override public int getRuleIndex() { return RULE_createLogin; }
51630 		@Override
51631 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51632 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLogin(this);
51633 			else return visitor.visitChildren(this);
51634 		}
51635 	}
51636 
51637 	public final CreateLoginContext createLogin() throws RecognitionException {
51638 		CreateLoginContext _localctx = new CreateLoginContext(_ctx, getState());
51639 		enterRule(_localctx, 956, RULE_createLogin);
51640 		try {
51641 			enterOuterAlt(_localctx, 1);
51642 			{
51643 			setState(6949);
51644 			match(CREATE);
51645 			setState(6950);
51646 			match(LOGIN);
51647 			setState(6951);
51648 			ignoredNameIdentifier();
51649 			setState(6957);
51650 			_errHandler.sync(this);
51651 			switch ( getInterpreter().adaptivePredict(_input,805,_ctx) ) {
51652 			case 1:
51653 				{
51654 				setState(6952);
51655 				createLoginForSQLServerClause();
51656 				}
51657 				break;
51658 			case 2:
51659 				{
51660 				setState(6953);
51661 				createLoginForAzureSQLDatabaseClause();
51662 				}
51663 				break;
51664 			case 3:
51665 				{
51666 				setState(6954);
51667 				createLoginForAzureManagedInstanceClause();
51668 				}
51669 				break;
51670 			case 4:
51671 				{
51672 				setState(6955);
51673 				createLoginForAzureSynapseAnalyticsClause();
51674 				}
51675 				break;
51676 			case 5:
51677 				{
51678 				setState(6956);
51679 				createLoginForAnalyticsPlatformSystemClause();
51680 				}
51681 				break;
51682 			}
51683 			}
51684 		}
51685 		catch (RecognitionException re) {
51686 			_localctx.exception = re;
51687 			_errHandler.reportError(this, re);
51688 			_errHandler.recover(this, re);
51689 		}
51690 		finally {
51691 			exitRule();
51692 		}
51693 		return _localctx;
51694 	}
51695 
51696 	public static class CreateLoginForSQLServerClauseContext extends ParserRuleContext {
51697 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51698 		public CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() {
51699 			return getRuleContext(CreateLoginForSQLServerOptionListContext.class,0);
51700 		}
51701 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
51702 		public SourcesContext sources() {
51703 			return getRuleContext(SourcesContext.class,0);
51704 		}
51705 		public CreateLoginForSQLServerClauseContext(ParserRuleContext parent, int invokingState) {
51706 			super(parent, invokingState);
51707 		}
51708 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerClause; }
51709 		@Override
51710 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51711 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerClause(this);
51712 			else return visitor.visitChildren(this);
51713 		}
51714 	}
51715 
51716 	public final CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() throws RecognitionException {
51717 		CreateLoginForSQLServerClauseContext _localctx = new CreateLoginForSQLServerClauseContext(_ctx, getState());
51718 		enterRule(_localctx, 958, RULE_createLoginForSQLServerClause);
51719 		try {
51720 			setState(6963);
51721 			_errHandler.sync(this);
51722 			switch (_input.LA(1)) {
51723 			case WITH:
51724 				enterOuterAlt(_localctx, 1);
51725 				{
51726 				setState(6959);
51727 				match(WITH);
51728 				setState(6960);
51729 				createLoginForSQLServerOptionList();
51730 				}
51731 				break;
51732 			case FROM:
51733 				enterOuterAlt(_localctx, 2);
51734 				{
51735 				setState(6961);
51736 				match(FROM);
51737 				setState(6962);
51738 				sources();
51739 				}
51740 				break;
51741 			default:
51742 				throw new NoViableAltException(this);
51743 			}
51744 		}
51745 		catch (RecognitionException re) {
51746 			_localctx.exception = re;
51747 			_errHandler.reportError(this, re);
51748 			_errHandler.recover(this, re);
51749 		}
51750 		finally {
51751 			exitRule();
51752 		}
51753 		return _localctx;
51754 	}
51755 
51756 	public static class CreateLoginForSQLServerOptionListContext extends ParserRuleContext {
51757 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51758 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51759 		public StringLiteralsContext stringLiterals() {
51760 			return getRuleContext(StringLiteralsContext.class,0);
51761 		}
51762 		public HashedPasswordContext hashedPassword() {
51763 			return getRuleContext(HashedPasswordContext.class,0);
51764 		}
51765 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
51766 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
51767 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51768 		public TerminalNode COMMA_(int i) {
51769 			return getToken(SQLServerStatementParser.COMMA_, i);
51770 		}
51771 		public List<CreateLoginForSQLServerOptionListClauseContext> createLoginForSQLServerOptionListClause() {
51772 			return getRuleContexts(CreateLoginForSQLServerOptionListClauseContext.class);
51773 		}
51774 		public CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause(int i) {
51775 			return getRuleContext(CreateLoginForSQLServerOptionListClauseContext.class,i);
51776 		}
51777 		public CreateLoginForSQLServerOptionListContext(ParserRuleContext parent, int invokingState) {
51778 			super(parent, invokingState);
51779 		}
51780 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionList; }
51781 		@Override
51782 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51783 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionList(this);
51784 			else return visitor.visitChildren(this);
51785 		}
51786 	}
51787 
51788 	public final CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() throws RecognitionException {
51789 		CreateLoginForSQLServerOptionListContext _localctx = new CreateLoginForSQLServerOptionListContext(_ctx, getState());
51790 		enterRule(_localctx, 960, RULE_createLoginForSQLServerOptionList);
51791 		int _la;
51792 		try {
51793 			enterOuterAlt(_localctx, 1);
51794 			{
51795 			setState(6965);
51796 			match(PASSWORD);
51797 			setState(6966);
51798 			match(EQ_);
51799 			setState(6971);
51800 			_errHandler.sync(this);
51801 			switch (_input.LA(1)) {
51802 			case STRING_:
51803 			case NCHAR_TEXT:
51804 				{
51805 				setState(6967);
51806 				stringLiterals();
51807 				}
51808 				break;
51809 			case HEX_DIGIT_:
51810 				{
51811 				setState(6968);
51812 				hashedPassword();
51813 				setState(6969);
51814 				match(HASHED);
51815 				}
51816 				break;
51817 			default:
51818 				throw new NoViableAltException(this);
51819 			}
51820 			setState(6974);
51821 			_errHandler.sync(this);
51822 			_la = _input.LA(1);
51823 			if (_la==MUST_CHANGE) {
51824 				{
51825 				setState(6973);
51826 				match(MUST_CHANGE);
51827 				}
51828 			}
51829 
51830 			setState(6985);
51831 			_errHandler.sync(this);
51832 			_la = _input.LA(1);
51833 			if (_la==COMMA_) {
51834 				{
51835 				setState(6976);
51836 				match(COMMA_);
51837 				setState(6977);
51838 				createLoginForSQLServerOptionListClause();
51839 				setState(6982);
51840 				_errHandler.sync(this);
51841 				_la = _input.LA(1);
51842 				while (_la==COMMA_) {
51843 					{
51844 					{
51845 					setState(6978);
51846 					match(COMMA_);
51847 					setState(6979);
51848 					createLoginForSQLServerOptionListClause();
51849 					}
51850 					}
51851 					setState(6984);
51852 					_errHandler.sync(this);
51853 					_la = _input.LA(1);
51854 				}
51855 				}
51856 			}
51857 
51858 			}
51859 		}
51860 		catch (RecognitionException re) {
51861 			_localctx.exception = re;
51862 			_errHandler.reportError(this, re);
51863 			_errHandler.recover(this, re);
51864 		}
51865 		finally {
51866 			exitRule();
51867 		}
51868 		return _localctx;
51869 	}
51870 
51871 	public static class CreateLoginForSQLServerOptionListClauseContext extends ParserRuleContext {
51872 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
51873 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51874 		public SidContext sid() {
51875 			return getRuleContext(SidContext.class,0);
51876 		}
51877 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
51878 		public DatabaseNameContext databaseName() {
51879 			return getRuleContext(DatabaseNameContext.class,0);
51880 		}
51881 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
51882 		public IdentifierContext identifier() {
51883 			return getRuleContext(IdentifierContext.class,0);
51884 		}
51885 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
51886 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
51887 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
51888 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
51889 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
51890 		public CreateLoginForSQLServerOptionListClauseContext(ParserRuleContext parent, int invokingState) {
51891 			super(parent, invokingState);
51892 		}
51893 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionListClause; }
51894 		@Override
51895 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51896 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionListClause(this);
51897 			else return visitor.visitChildren(this);
51898 		}
51899 	}
51900 
51901 	public final CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause() throws RecognitionException {
51902 		CreateLoginForSQLServerOptionListClauseContext _localctx = new CreateLoginForSQLServerOptionListClauseContext(_ctx, getState());
51903 		enterRule(_localctx, 962, RULE_createLoginForSQLServerOptionListClause);
51904 		int _la;
51905 		try {
51906 			setState(7005);
51907 			_errHandler.sync(this);
51908 			switch (_input.LA(1)) {
51909 			case SID:
51910 				enterOuterAlt(_localctx, 1);
51911 				{
51912 				setState(6987);
51913 				match(SID);
51914 				setState(6988);
51915 				match(EQ_);
51916 				setState(6989);
51917 				sid();
51918 				}
51919 				break;
51920 			case DEFAULT_DATABASE:
51921 				enterOuterAlt(_localctx, 2);
51922 				{
51923 				setState(6990);
51924 				match(DEFAULT_DATABASE);
51925 				setState(6991);
51926 				match(EQ_);
51927 				setState(6992);
51928 				databaseName();
51929 				}
51930 				break;
51931 			case DEFAULT_LANGUAGE:
51932 				enterOuterAlt(_localctx, 3);
51933 				{
51934 				setState(6993);
51935 				match(DEFAULT_LANGUAGE);
51936 				setState(6994);
51937 				match(EQ_);
51938 				setState(6995);
51939 				identifier();
51940 				}
51941 				break;
51942 			case CHECK_EXPIRATION:
51943 				enterOuterAlt(_localctx, 4);
51944 				{
51945 				setState(6996);
51946 				match(CHECK_EXPIRATION);
51947 				setState(6997);
51948 				match(EQ_);
51949 				setState(6998);
51950 				_la = _input.LA(1);
51951 				if ( !(_la==ON || _la==OFF) ) {
51952 				_errHandler.recoverInline(this);
51953 				}
51954 				else {
51955 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51956 					_errHandler.reportMatch(this);
51957 					consume();
51958 				}
51959 				}
51960 				break;
51961 			case CHECK_POLICY:
51962 				enterOuterAlt(_localctx, 5);
51963 				{
51964 				setState(6999);
51965 				match(CHECK_POLICY);
51966 				setState(7000);
51967 				match(EQ_);
51968 				setState(7001);
51969 				_la = _input.LA(1);
51970 				if ( !(_la==ON || _la==OFF) ) {
51971 				_errHandler.recoverInline(this);
51972 				}
51973 				else {
51974 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51975 					_errHandler.reportMatch(this);
51976 					consume();
51977 				}
51978 				}
51979 				break;
51980 			case CREDENTIAL:
51981 				enterOuterAlt(_localctx, 6);
51982 				{
51983 				setState(7002);
51984 				match(CREDENTIAL);
51985 				setState(7003);
51986 				match(EQ_);
51987 				setState(7004);
51988 				identifier();
51989 				}
51990 				break;
51991 			default:
51992 				throw new NoViableAltException(this);
51993 			}
51994 		}
51995 		catch (RecognitionException re) {
51996 			_localctx.exception = re;
51997 			_errHandler.reportError(this, re);
51998 			_errHandler.recover(this, re);
51999 		}
52000 		finally {
52001 			exitRule();
52002 		}
52003 		return _localctx;
52004 	}
52005 
52006 	public static class HashedPasswordContext extends ParserRuleContext {
52007 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
52008 		public HashedPasswordContext(ParserRuleContext parent, int invokingState) {
52009 			super(parent, invokingState);
52010 		}
52011 		@Override public int getRuleIndex() { return RULE_hashedPassword; }
52012 		@Override
52013 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52014 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashedPassword(this);
52015 			else return visitor.visitChildren(this);
52016 		}
52017 	}
52018 
52019 	public final HashedPasswordContext hashedPassword() throws RecognitionException {
52020 		HashedPasswordContext _localctx = new HashedPasswordContext(_ctx, getState());
52021 		enterRule(_localctx, 964, RULE_hashedPassword);
52022 		try {
52023 			enterOuterAlt(_localctx, 1);
52024 			{
52025 			setState(7007);
52026 			match(HEX_DIGIT_);
52027 			}
52028 		}
52029 		catch (RecognitionException re) {
52030 			_localctx.exception = re;
52031 			_errHandler.reportError(this, re);
52032 			_errHandler.recover(this, re);
52033 		}
52034 		finally {
52035 			exitRule();
52036 		}
52037 		return _localctx;
52038 	}
52039 
52040 	public static class SidContext extends ParserRuleContext {
52041 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
52042 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
52043 		public SidContext(ParserRuleContext parent, int invokingState) {
52044 			super(parent, invokingState);
52045 		}
52046 		@Override public int getRuleIndex() { return RULE_sid; }
52047 		@Override
52048 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52049 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSid(this);
52050 			else return visitor.visitChildren(this);
52051 		}
52052 	}
52053 
52054 	public final SidContext sid() throws RecognitionException {
52055 		SidContext _localctx = new SidContext(_ctx, getState());
52056 		enterRule(_localctx, 966, RULE_sid);
52057 		int _la;
52058 		try {
52059 			enterOuterAlt(_localctx, 1);
52060 			{
52061 			setState(7009);
52062 			_la = _input.LA(1);
52063 			if ( !(_la==HEX_DIGIT_ || _la==NCHAR_TEXT) ) {
52064 			_errHandler.recoverInline(this);
52065 			}
52066 			else {
52067 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52068 				_errHandler.reportMatch(this);
52069 				consume();
52070 			}
52071 			}
52072 		}
52073 		catch (RecognitionException re) {
52074 			_localctx.exception = re;
52075 			_errHandler.reportError(this, re);
52076 			_errHandler.recover(this, re);
52077 		}
52078 		finally {
52079 			exitRule();
52080 		}
52081 		return _localctx;
52082 	}
52083 
52084 	public static class SourcesContext extends ParserRuleContext {
52085 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
52086 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52087 		public List<WindowsOptionsContext> windowsOptions() {
52088 			return getRuleContexts(WindowsOptionsContext.class);
52089 		}
52090 		public WindowsOptionsContext windowsOptions(int i) {
52091 			return getRuleContext(WindowsOptionsContext.class,i);
52092 		}
52093 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52094 		public TerminalNode COMMA_(int i) {
52095 			return getToken(SQLServerStatementParser.COMMA_, i);
52096 		}
52097 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
52098 		public IdentifierContext identifier() {
52099 			return getRuleContext(IdentifierContext.class,0);
52100 		}
52101 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
52102 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
52103 		public SourcesContext(ParserRuleContext parent, int invokingState) {
52104 			super(parent, invokingState);
52105 		}
52106 		@Override public int getRuleIndex() { return RULE_sources; }
52107 		@Override
52108 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52109 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSources(this);
52110 			else return visitor.visitChildren(this);
52111 		}
52112 	}
52113 
52114 	public final SourcesContext sources() throws RecognitionException {
52115 		SourcesContext _localctx = new SourcesContext(_ctx, getState());
52116 		enterRule(_localctx, 968, RULE_sources);
52117 		int _la;
52118 		try {
52119 			setState(7028);
52120 			_errHandler.sync(this);
52121 			switch (_input.LA(1)) {
52122 			case WINDOWS:
52123 				enterOuterAlt(_localctx, 1);
52124 				{
52125 				setState(7011);
52126 				match(WINDOWS);
52127 				setState(7021);
52128 				_errHandler.sync(this);
52129 				_la = _input.LA(1);
52130 				if (_la==WITH) {
52131 					{
52132 					setState(7012);
52133 					match(WITH);
52134 					setState(7013);
52135 					windowsOptions();
52136 					setState(7018);
52137 					_errHandler.sync(this);
52138 					_la = _input.LA(1);
52139 					while (_la==COMMA_) {
52140 						{
52141 						{
52142 						setState(7014);
52143 						match(COMMA_);
52144 						setState(7015);
52145 						windowsOptions();
52146 						}
52147 						}
52148 						setState(7020);
52149 						_errHandler.sync(this);
52150 						_la = _input.LA(1);
52151 					}
52152 					}
52153 				}
52154 
52155 				}
52156 				break;
52157 			case CERTIFICATE:
52158 				enterOuterAlt(_localctx, 2);
52159 				{
52160 				setState(7023);
52161 				match(CERTIFICATE);
52162 				setState(7024);
52163 				identifier();
52164 				}
52165 				break;
52166 			case ASYMMETRIC:
52167 				enterOuterAlt(_localctx, 3);
52168 				{
52169 				setState(7025);
52170 				match(ASYMMETRIC);
52171 				setState(7026);
52172 				match(KEY);
52173 				setState(7027);
52174 				identifier();
52175 				}
52176 				break;
52177 			default:
52178 				throw new NoViableAltException(this);
52179 			}
52180 		}
52181 		catch (RecognitionException re) {
52182 			_localctx.exception = re;
52183 			_errHandler.reportError(this, re);
52184 			_errHandler.recover(this, re);
52185 		}
52186 		finally {
52187 			exitRule();
52188 		}
52189 		return _localctx;
52190 	}
52191 
52192 	public static class WindowsOptionsContext extends ParserRuleContext {
52193 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
52194 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52195 		public DatabaseNameContext databaseName() {
52196 			return getRuleContext(DatabaseNameContext.class,0);
52197 		}
52198 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
52199 		public IdentifierContext identifier() {
52200 			return getRuleContext(IdentifierContext.class,0);
52201 		}
52202 		public WindowsOptionsContext(ParserRuleContext parent, int invokingState) {
52203 			super(parent, invokingState);
52204 		}
52205 		@Override public int getRuleIndex() { return RULE_windowsOptions; }
52206 		@Override
52207 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52208 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsOptions(this);
52209 			else return visitor.visitChildren(this);
52210 		}
52211 	}
52212 
52213 	public final WindowsOptionsContext windowsOptions() throws RecognitionException {
52214 		WindowsOptionsContext _localctx = new WindowsOptionsContext(_ctx, getState());
52215 		enterRule(_localctx, 970, RULE_windowsOptions);
52216 		try {
52217 			setState(7036);
52218 			_errHandler.sync(this);
52219 			switch (_input.LA(1)) {
52220 			case DEFAULT_DATABASE:
52221 				enterOuterAlt(_localctx, 1);
52222 				{
52223 				setState(7030);
52224 				match(DEFAULT_DATABASE);
52225 				setState(7031);
52226 				match(EQ_);
52227 				setState(7032);
52228 				databaseName();
52229 				}
52230 				break;
52231 			case DEFAULT_LANGUAGE:
52232 				enterOuterAlt(_localctx, 2);
52233 				{
52234 				setState(7033);
52235 				match(DEFAULT_LANGUAGE);
52236 				setState(7034);
52237 				match(EQ_);
52238 				setState(7035);
52239 				identifier();
52240 				}
52241 				break;
52242 			default:
52243 				throw new NoViableAltException(this);
52244 			}
52245 		}
52246 		catch (RecognitionException re) {
52247 			_localctx.exception = re;
52248 			_errHandler.reportError(this, re);
52249 			_errHandler.recover(this, re);
52250 		}
52251 		finally {
52252 			exitRule();
52253 		}
52254 		return _localctx;
52255 	}
52256 
52257 	public static class CreateLoginForAzureSQLDatabaseClauseContext extends ParserRuleContext {
52258 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
52259 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
52260 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
52261 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52262 		public List<CreateLoginForAzureSQLDatabaseOptionListContext> createLoginForAzureSQLDatabaseOptionList() {
52263 			return getRuleContexts(CreateLoginForAzureSQLDatabaseOptionListContext.class);
52264 		}
52265 		public CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList(int i) {
52266 			return getRuleContext(CreateLoginForAzureSQLDatabaseOptionListContext.class,i);
52267 		}
52268 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52269 		public TerminalNode COMMA_(int i) {
52270 			return getToken(SQLServerStatementParser.COMMA_, i);
52271 		}
52272 		public CreateLoginForAzureSQLDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
52273 			super(parent, invokingState);
52274 		}
52275 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseClause; }
52276 		@Override
52277 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52278 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseClause(this);
52279 			else return visitor.visitChildren(this);
52280 		}
52281 	}
52282 
52283 	public final CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() throws RecognitionException {
52284 		CreateLoginForAzureSQLDatabaseClauseContext _localctx = new CreateLoginForAzureSQLDatabaseClauseContext(_ctx, getState());
52285 		enterRule(_localctx, 972, RULE_createLoginForAzureSQLDatabaseClause);
52286 		int _la;
52287 		try {
52288 			setState(7050);
52289 			_errHandler.sync(this);
52290 			switch (_input.LA(1)) {
52291 			case FROM:
52292 				enterOuterAlt(_localctx, 1);
52293 				{
52294 				setState(7038);
52295 				match(FROM);
52296 				setState(7039);
52297 				match(EXTERNAL);
52298 				setState(7040);
52299 				match(PROVIDER);
52300 				}
52301 				break;
52302 			case WITH:
52303 				enterOuterAlt(_localctx, 2);
52304 				{
52305 				setState(7041);
52306 				match(WITH);
52307 				setState(7042);
52308 				createLoginForAzureSQLDatabaseOptionList();
52309 				setState(7047);
52310 				_errHandler.sync(this);
52311 				_la = _input.LA(1);
52312 				while (_la==COMMA_) {
52313 					{
52314 					{
52315 					setState(7043);
52316 					match(COMMA_);
52317 					setState(7044);
52318 					createLoginForAzureSQLDatabaseOptionList();
52319 					}
52320 					}
52321 					setState(7049);
52322 					_errHandler.sync(this);
52323 					_la = _input.LA(1);
52324 				}
52325 				}
52326 				break;
52327 			default:
52328 				throw new NoViableAltException(this);
52329 			}
52330 		}
52331 		catch (RecognitionException re) {
52332 			_localctx.exception = re;
52333 			_errHandler.reportError(this, re);
52334 			_errHandler.recover(this, re);
52335 		}
52336 		finally {
52337 			exitRule();
52338 		}
52339 		return _localctx;
52340 	}
52341 
52342 	public static class CreateLoginForAzureSQLDatabaseOptionListContext extends ParserRuleContext {
52343 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52344 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
52345 		public TerminalNode EQ_(int i) {
52346 			return getToken(SQLServerStatementParser.EQ_, i);
52347 		}
52348 		public StringLiteralsContext stringLiterals() {
52349 			return getRuleContext(StringLiteralsContext.class,0);
52350 		}
52351 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
52352 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52353 		public SidContext sid() {
52354 			return getRuleContext(SidContext.class,0);
52355 		}
52356 		public CreateLoginForAzureSQLDatabaseOptionListContext(ParserRuleContext parent, int invokingState) {
52357 			super(parent, invokingState);
52358 		}
52359 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseOptionList; }
52360 		@Override
52361 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52362 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseOptionList(this);
52363 			else return visitor.visitChildren(this);
52364 		}
52365 	}
52366 
52367 	public final CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList() throws RecognitionException {
52368 		CreateLoginForAzureSQLDatabaseOptionListContext _localctx = new CreateLoginForAzureSQLDatabaseOptionListContext(_ctx, getState());
52369 		enterRule(_localctx, 974, RULE_createLoginForAzureSQLDatabaseOptionList);
52370 		try {
52371 			enterOuterAlt(_localctx, 1);
52372 			{
52373 			setState(7052);
52374 			match(PASSWORD);
52375 			setState(7053);
52376 			match(EQ_);
52377 			setState(7054);
52378 			stringLiterals();
52379 			setState(7059);
52380 			_errHandler.sync(this);
52381 			switch ( getInterpreter().adaptivePredict(_input,818,_ctx) ) {
52382 			case 1:
52383 				{
52384 				setState(7055);
52385 				match(COMMA_);
52386 				setState(7056);
52387 				match(SID);
52388 				setState(7057);
52389 				match(EQ_);
52390 				setState(7058);
52391 				sid();
52392 				}
52393 				break;
52394 			}
52395 			}
52396 		}
52397 		catch (RecognitionException re) {
52398 			_localctx.exception = re;
52399 			_errHandler.reportError(this, re);
52400 			_errHandler.recover(this, re);
52401 		}
52402 		finally {
52403 			exitRule();
52404 		}
52405 		return _localctx;
52406 	}
52407 
52408 	public static class CreateLoginForAzureManagedInstanceClauseContext extends ParserRuleContext {
52409 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52410 		public List<AzureManagedInstanceOptionListContext> azureManagedInstanceOptionList() {
52411 			return getRuleContexts(AzureManagedInstanceOptionListContext.class);
52412 		}
52413 		public AzureManagedInstanceOptionListContext azureManagedInstanceOptionList(int i) {
52414 			return getRuleContext(AzureManagedInstanceOptionListContext.class,i);
52415 		}
52416 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
52417 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
52418 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
52419 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52420 		public TerminalNode COMMA_(int i) {
52421 			return getToken(SQLServerStatementParser.COMMA_, i);
52422 		}
52423 		public CreateLoginForAzureManagedInstanceClauseContext(ParserRuleContext parent, int invokingState) {
52424 			super(parent, invokingState);
52425 		}
52426 		@Override public int getRuleIndex() { return RULE_createLoginForAzureManagedInstanceClause; }
52427 		@Override
52428 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52429 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureManagedInstanceClause(this);
52430 			else return visitor.visitChildren(this);
52431 		}
52432 	}
52433 
52434 	public final CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() throws RecognitionException {
52435 		CreateLoginForAzureManagedInstanceClauseContext _localctx = new CreateLoginForAzureManagedInstanceClauseContext(_ctx, getState());
52436 		enterRule(_localctx, 976, RULE_createLoginForAzureManagedInstanceClause);
52437 		int _la;
52438 		try {
52439 			enterOuterAlt(_localctx, 1);
52440 			{
52441 			setState(7064);
52442 			_errHandler.sync(this);
52443 			_la = _input.LA(1);
52444 			if (_la==FROM) {
52445 				{
52446 				setState(7061);
52447 				match(FROM);
52448 				setState(7062);
52449 				match(EXTERNAL);
52450 				setState(7063);
52451 				match(PROVIDER);
52452 				}
52453 			}
52454 
52455 			setState(7066);
52456 			match(WITH);
52457 			setState(7067);
52458 			azureManagedInstanceOptionList();
52459 			setState(7072);
52460 			_errHandler.sync(this);
52461 			_la = _input.LA(1);
52462 			while (_la==COMMA_) {
52463 				{
52464 				{
52465 				setState(7068);
52466 				match(COMMA_);
52467 				setState(7069);
52468 				azureManagedInstanceOptionList();
52469 				}
52470 				}
52471 				setState(7074);
52472 				_errHandler.sync(this);
52473 				_la = _input.LA(1);
52474 			}
52475 			}
52476 		}
52477 		catch (RecognitionException re) {
52478 			_localctx.exception = re;
52479 			_errHandler.reportError(this, re);
52480 			_errHandler.recover(this, re);
52481 		}
52482 		finally {
52483 			exitRule();
52484 		}
52485 		return _localctx;
52486 	}
52487 
52488 	public static class AzureManagedInstanceOptionListContext extends ParserRuleContext {
52489 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52490 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52491 		public StringLiteralsContext stringLiterals() {
52492 			return getRuleContext(StringLiteralsContext.class,0);
52493 		}
52494 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52495 		public SidContext sid() {
52496 			return getRuleContext(SidContext.class,0);
52497 		}
52498 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
52499 		public DatabaseNameContext databaseName() {
52500 			return getRuleContext(DatabaseNameContext.class,0);
52501 		}
52502 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
52503 		public IdentifierContext identifier() {
52504 			return getRuleContext(IdentifierContext.class,0);
52505 		}
52506 		public AzureManagedInstanceOptionListContext(ParserRuleContext parent, int invokingState) {
52507 			super(parent, invokingState);
52508 		}
52509 		@Override public int getRuleIndex() { return RULE_azureManagedInstanceOptionList; }
52510 		@Override
52511 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52512 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureManagedInstanceOptionList(this);
52513 			else return visitor.visitChildren(this);
52514 		}
52515 	}
52516 
52517 	public final AzureManagedInstanceOptionListContext azureManagedInstanceOptionList() throws RecognitionException {
52518 		AzureManagedInstanceOptionListContext _localctx = new AzureManagedInstanceOptionListContext(_ctx, getState());
52519 		enterRule(_localctx, 978, RULE_azureManagedInstanceOptionList);
52520 		try {
52521 			setState(7087);
52522 			_errHandler.sync(this);
52523 			switch (_input.LA(1)) {
52524 			case PASSWORD:
52525 				enterOuterAlt(_localctx, 1);
52526 				{
52527 				setState(7075);
52528 				match(PASSWORD);
52529 				setState(7076);
52530 				match(EQ_);
52531 				setState(7077);
52532 				stringLiterals();
52533 				}
52534 				break;
52535 			case SID:
52536 				enterOuterAlt(_localctx, 2);
52537 				{
52538 				setState(7078);
52539 				match(SID);
52540 				setState(7079);
52541 				match(EQ_);
52542 				setState(7080);
52543 				sid();
52544 				}
52545 				break;
52546 			case DEFAULT_DATABASE:
52547 				enterOuterAlt(_localctx, 3);
52548 				{
52549 				setState(7081);
52550 				match(DEFAULT_DATABASE);
52551 				setState(7082);
52552 				match(EQ_);
52553 				setState(7083);
52554 				databaseName();
52555 				}
52556 				break;
52557 			case DEFAULT_LANGUAGE:
52558 				enterOuterAlt(_localctx, 4);
52559 				{
52560 				setState(7084);
52561 				match(DEFAULT_LANGUAGE);
52562 				setState(7085);
52563 				match(EQ_);
52564 				setState(7086);
52565 				identifier();
52566 				}
52567 				break;
52568 			default:
52569 				throw new NoViableAltException(this);
52570 			}
52571 		}
52572 		catch (RecognitionException re) {
52573 			_localctx.exception = re;
52574 			_errHandler.reportError(this, re);
52575 			_errHandler.recover(this, re);
52576 		}
52577 		finally {
52578 			exitRule();
52579 		}
52580 		return _localctx;
52581 	}
52582 
52583 	public static class CreateLoginForAzureSynapseAnalyticsClauseContext extends ParserRuleContext {
52584 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52585 		public CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() {
52586 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsOptionListContext.class,0);
52587 		}
52588 		public CreateLoginForAzureSynapseAnalyticsClauseContext(ParserRuleContext parent, int invokingState) {
52589 			super(parent, invokingState);
52590 		}
52591 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsClause; }
52592 		@Override
52593 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52594 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsClause(this);
52595 			else return visitor.visitChildren(this);
52596 		}
52597 	}
52598 
52599 	public final CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() throws RecognitionException {
52600 		CreateLoginForAzureSynapseAnalyticsClauseContext _localctx = new CreateLoginForAzureSynapseAnalyticsClauseContext(_ctx, getState());
52601 		enterRule(_localctx, 980, RULE_createLoginForAzureSynapseAnalyticsClause);
52602 		try {
52603 			enterOuterAlt(_localctx, 1);
52604 			{
52605 			setState(7089);
52606 			match(WITH);
52607 			setState(7090);
52608 			createLoginForAzureSynapseAnalyticsOptionList();
52609 			}
52610 		}
52611 		catch (RecognitionException re) {
52612 			_localctx.exception = re;
52613 			_errHandler.reportError(this, re);
52614 			_errHandler.recover(this, re);
52615 		}
52616 		finally {
52617 			exitRule();
52618 		}
52619 		return _localctx;
52620 	}
52621 
52622 	public static class CreateLoginForAzureSynapseAnalyticsOptionListContext extends ParserRuleContext {
52623 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52624 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
52625 		public TerminalNode EQ_(int i) {
52626 			return getToken(SQLServerStatementParser.EQ_, i);
52627 		}
52628 		public StringLiteralsContext stringLiterals() {
52629 			return getRuleContext(StringLiteralsContext.class,0);
52630 		}
52631 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
52632 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52633 		public SidContext sid() {
52634 			return getRuleContext(SidContext.class,0);
52635 		}
52636 		public CreateLoginForAzureSynapseAnalyticsOptionListContext(ParserRuleContext parent, int invokingState) {
52637 			super(parent, invokingState);
52638 		}
52639 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsOptionList; }
52640 		@Override
52641 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52642 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsOptionList(this);
52643 			else return visitor.visitChildren(this);
52644 		}
52645 	}
52646 
52647 	public final CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() throws RecognitionException {
52648 		CreateLoginForAzureSynapseAnalyticsOptionListContext _localctx = new CreateLoginForAzureSynapseAnalyticsOptionListContext(_ctx, getState());
52649 		enterRule(_localctx, 982, RULE_createLoginForAzureSynapseAnalyticsOptionList);
52650 		int _la;
52651 		try {
52652 			enterOuterAlt(_localctx, 1);
52653 			{
52654 			setState(7092);
52655 			match(PASSWORD);
52656 			setState(7093);
52657 			match(EQ_);
52658 			setState(7094);
52659 			stringLiterals();
52660 			setState(7099);
52661 			_errHandler.sync(this);
52662 			_la = _input.LA(1);
52663 			if (_la==COMMA_) {
52664 				{
52665 				setState(7095);
52666 				match(COMMA_);
52667 				setState(7096);
52668 				match(SID);
52669 				setState(7097);
52670 				match(EQ_);
52671 				setState(7098);
52672 				sid();
52673 				}
52674 			}
52675 
52676 			}
52677 		}
52678 		catch (RecognitionException re) {
52679 			_localctx.exception = re;
52680 			_errHandler.reportError(this, re);
52681 			_errHandler.recover(this, re);
52682 		}
52683 		finally {
52684 			exitRule();
52685 		}
52686 		return _localctx;
52687 	}
52688 
52689 	public static class CreateLoginForAnalyticsPlatformSystemClauseContext extends ParserRuleContext {
52690 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52691 		public CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() {
52692 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListContext.class,0);
52693 		}
52694 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
52695 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
52696 		public CreateLoginForAnalyticsPlatformSystemClauseContext(ParserRuleContext parent, int invokingState) {
52697 			super(parent, invokingState);
52698 		}
52699 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemClause; }
52700 		@Override
52701 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52702 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemClause(this);
52703 			else return visitor.visitChildren(this);
52704 		}
52705 	}
52706 
52707 	public final CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() throws RecognitionException {
52708 		CreateLoginForAnalyticsPlatformSystemClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemClauseContext(_ctx, getState());
52709 		enterRule(_localctx, 984, RULE_createLoginForAnalyticsPlatformSystemClause);
52710 		try {
52711 			setState(7105);
52712 			_errHandler.sync(this);
52713 			switch (_input.LA(1)) {
52714 			case WITH:
52715 				enterOuterAlt(_localctx, 1);
52716 				{
52717 				setState(7101);
52718 				match(WITH);
52719 				setState(7102);
52720 				createLoginForAnalyticsPlatformSystemOptionList();
52721 				}
52722 				break;
52723 			case FROM:
52724 				enterOuterAlt(_localctx, 2);
52725 				{
52726 				setState(7103);
52727 				match(FROM);
52728 				setState(7104);
52729 				match(WINDOWS);
52730 				}
52731 				break;
52732 			default:
52733 				throw new NoViableAltException(this);
52734 			}
52735 		}
52736 		catch (RecognitionException re) {
52737 			_localctx.exception = re;
52738 			_errHandler.reportError(this, re);
52739 			_errHandler.recover(this, re);
52740 		}
52741 		finally {
52742 			exitRule();
52743 		}
52744 		return _localctx;
52745 	}
52746 
52747 	public static class CreateLoginForAnalyticsPlatformSystemOptionListContext extends ParserRuleContext {
52748 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52749 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52750 		public StringLiteralsContext stringLiterals() {
52751 			return getRuleContext(StringLiteralsContext.class,0);
52752 		}
52753 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
52754 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52755 		public TerminalNode COMMA_(int i) {
52756 			return getToken(SQLServerStatementParser.COMMA_, i);
52757 		}
52758 		public List<CreateLoginForAnalyticsPlatformSystemOptionListClauseContext> createLoginForAnalyticsPlatformSystemOptionListClause() {
52759 			return getRuleContexts(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class);
52760 		}
52761 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause(int i) {
52762 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class,i);
52763 		}
52764 		public CreateLoginForAnalyticsPlatformSystemOptionListContext(ParserRuleContext parent, int invokingState) {
52765 			super(parent, invokingState);
52766 		}
52767 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionList; }
52768 		@Override
52769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionList(this);
52771 			else return visitor.visitChildren(this);
52772 		}
52773 	}
52774 
52775 	public final CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() throws RecognitionException {
52776 		CreateLoginForAnalyticsPlatformSystemOptionListContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListContext(_ctx, getState());
52777 		enterRule(_localctx, 986, RULE_createLoginForAnalyticsPlatformSystemOptionList);
52778 		int _la;
52779 		try {
52780 			enterOuterAlt(_localctx, 1);
52781 			{
52782 			setState(7107);
52783 			match(PASSWORD);
52784 			setState(7108);
52785 			match(EQ_);
52786 			setState(7109);
52787 			stringLiterals();
52788 			setState(7111);
52789 			_errHandler.sync(this);
52790 			_la = _input.LA(1);
52791 			if (_la==MUST_CHANGE) {
52792 				{
52793 				setState(7110);
52794 				match(MUST_CHANGE);
52795 				}
52796 			}
52797 
52798 			setState(7122);
52799 			_errHandler.sync(this);
52800 			_la = _input.LA(1);
52801 			if (_la==COMMA_) {
52802 				{
52803 				setState(7113);
52804 				match(COMMA_);
52805 				setState(7114);
52806 				createLoginForAnalyticsPlatformSystemOptionListClause();
52807 				setState(7119);
52808 				_errHandler.sync(this);
52809 				_la = _input.LA(1);
52810 				while (_la==COMMA_) {
52811 					{
52812 					{
52813 					setState(7115);
52814 					match(COMMA_);
52815 					setState(7116);
52816 					createLoginForAnalyticsPlatformSystemOptionListClause();
52817 					}
52818 					}
52819 					setState(7121);
52820 					_errHandler.sync(this);
52821 					_la = _input.LA(1);
52822 				}
52823 				}
52824 			}
52825 
52826 			}
52827 		}
52828 		catch (RecognitionException re) {
52829 			_localctx.exception = re;
52830 			_errHandler.reportError(this, re);
52831 			_errHandler.recover(this, re);
52832 		}
52833 		finally {
52834 			exitRule();
52835 		}
52836 		return _localctx;
52837 	}
52838 
52839 	public static class CreateLoginForAnalyticsPlatformSystemOptionListClauseContext extends ParserRuleContext {
52840 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
52841 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52842 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
52843 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
52844 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
52845 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(ParserRuleContext parent, int invokingState) {
52846 			super(parent, invokingState);
52847 		}
52848 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionListClause; }
52849 		@Override
52850 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52851 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionListClause(this);
52852 			else return visitor.visitChildren(this);
52853 		}
52854 	}
52855 
52856 	public final CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause() throws RecognitionException {
52857 		CreateLoginForAnalyticsPlatformSystemOptionListClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(_ctx, getState());
52858 		enterRule(_localctx, 988, RULE_createLoginForAnalyticsPlatformSystemOptionListClause);
52859 		int _la;
52860 		try {
52861 			setState(7130);
52862 			_errHandler.sync(this);
52863 			switch (_input.LA(1)) {
52864 			case CHECK_EXPIRATION:
52865 				enterOuterAlt(_localctx, 1);
52866 				{
52867 				setState(7124);
52868 				match(CHECK_EXPIRATION);
52869 				setState(7125);
52870 				match(EQ_);
52871 				setState(7126);
52872 				_la = _input.LA(1);
52873 				if ( !(_la==ON || _la==OFF) ) {
52874 				_errHandler.recoverInline(this);
52875 				}
52876 				else {
52877 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52878 					_errHandler.reportMatch(this);
52879 					consume();
52880 				}
52881 				}
52882 				break;
52883 			case CHECK_POLICY:
52884 				enterOuterAlt(_localctx, 2);
52885 				{
52886 				setState(7127);
52887 				match(CHECK_POLICY);
52888 				setState(7128);
52889 				match(EQ_);
52890 				setState(7129);
52891 				_la = _input.LA(1);
52892 				if ( !(_la==ON || _la==OFF) ) {
52893 				_errHandler.recoverInline(this);
52894 				}
52895 				else {
52896 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52897 					_errHandler.reportMatch(this);
52898 					consume();
52899 				}
52900 				}
52901 				break;
52902 			default:
52903 				throw new NoViableAltException(this);
52904 			}
52905 		}
52906 		catch (RecognitionException re) {
52907 			_localctx.exception = re;
52908 			_errHandler.reportError(this, re);
52909 			_errHandler.recover(this, re);
52910 		}
52911 		finally {
52912 			exitRule();
52913 		}
52914 		return _localctx;
52915 	}
52916 
52917 	public static class DropLoginContext extends ParserRuleContext {
52918 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
52919 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
52920 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
52921 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
52922 		}
52923 		public DropLoginContext(ParserRuleContext parent, int invokingState) {
52924 			super(parent, invokingState);
52925 		}
52926 		@Override public int getRuleIndex() { return RULE_dropLogin; }
52927 		@Override
52928 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52929 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropLogin(this);
52930 			else return visitor.visitChildren(this);
52931 		}
52932 	}
52933 
52934 	public final DropLoginContext dropLogin() throws RecognitionException {
52935 		DropLoginContext _localctx = new DropLoginContext(_ctx, getState());
52936 		enterRule(_localctx, 990, RULE_dropLogin);
52937 		try {
52938 			enterOuterAlt(_localctx, 1);
52939 			{
52940 			setState(7132);
52941 			match(DROP);
52942 			setState(7133);
52943 			match(LOGIN);
52944 			setState(7134);
52945 			ignoredNameIdentifier();
52946 			}
52947 		}
52948 		catch (RecognitionException re) {
52949 			_localctx.exception = re;
52950 			_errHandler.reportError(this, re);
52951 			_errHandler.recover(this, re);
52952 		}
52953 		finally {
52954 			exitRule();
52955 		}
52956 		return _localctx;
52957 	}
52958 
52959 	public static class AlterLoginContext extends ParserRuleContext {
52960 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
52961 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
52962 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
52963 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
52964 		}
52965 		public StatusOptionClauseContext statusOptionClause() {
52966 			return getRuleContext(StatusOptionClauseContext.class,0);
52967 		}
52968 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52969 		public List<SetOptionClauseContext> setOptionClause() {
52970 			return getRuleContexts(SetOptionClauseContext.class);
52971 		}
52972 		public SetOptionClauseContext setOptionClause(int i) {
52973 			return getRuleContext(SetOptionClauseContext.class,i);
52974 		}
52975 		public CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() {
52976 			return getRuleContext(CryptographicCredentialsOptionClauseContext.class,0);
52977 		}
52978 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52979 		public TerminalNode COMMA_(int i) {
52980 			return getToken(SQLServerStatementParser.COMMA_, i);
52981 		}
52982 		public AlterLoginContext(ParserRuleContext parent, int invokingState) {
52983 			super(parent, invokingState);
52984 		}
52985 		@Override public int getRuleIndex() { return RULE_alterLogin; }
52986 		@Override
52987 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52988 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterLogin(this);
52989 			else return visitor.visitChildren(this);
52990 		}
52991 	}
52992 
52993 	public final AlterLoginContext alterLogin() throws RecognitionException {
52994 		AlterLoginContext _localctx = new AlterLoginContext(_ctx, getState());
52995 		enterRule(_localctx, 992, RULE_alterLogin);
52996 		int _la;
52997 		try {
52998 			enterOuterAlt(_localctx, 1);
52999 			{
53000 			setState(7136);
53001 			match(ALTER);
53002 			setState(7137);
53003 			match(LOGIN);
53004 			setState(7138);
53005 			ignoredNameIdentifier();
53006 			setState(7150);
53007 			_errHandler.sync(this);
53008 			switch (_input.LA(1)) {
53009 			case ENABLE:
53010 			case DISABLE:
53011 				{
53012 				setState(7139);
53013 				statusOptionClause();
53014 				}
53015 				break;
53016 			case WITH:
53017 				{
53018 				setState(7140);
53019 				match(WITH);
53020 				setState(7141);
53021 				setOptionClause();
53022 				setState(7146);
53023 				_errHandler.sync(this);
53024 				_la = _input.LA(1);
53025 				while (_la==COMMA_) {
53026 					{
53027 					{
53028 					setState(7142);
53029 					match(COMMA_);
53030 					setState(7143);
53031 					setOptionClause();
53032 					}
53033 					}
53034 					setState(7148);
53035 					_errHandler.sync(this);
53036 					_la = _input.LA(1);
53037 				}
53038 				}
53039 				break;
53040 			case DROP:
53041 			case ADD:
53042 				{
53043 				setState(7149);
53044 				cryptographicCredentialsOptionClause();
53045 				}
53046 				break;
53047 			default:
53048 				throw new NoViableAltException(this);
53049 			}
53050 			}
53051 		}
53052 		catch (RecognitionException re) {
53053 			_localctx.exception = re;
53054 			_errHandler.reportError(this, re);
53055 			_errHandler.recover(this, re);
53056 		}
53057 		finally {
53058 			exitRule();
53059 		}
53060 		return _localctx;
53061 	}
53062 
53063 	public static class StatusOptionClauseContext extends ParserRuleContext {
53064 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
53065 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
53066 		public StatusOptionClauseContext(ParserRuleContext parent, int invokingState) {
53067 			super(parent, invokingState);
53068 		}
53069 		@Override public int getRuleIndex() { return RULE_statusOptionClause; }
53070 		@Override
53071 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53072 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatusOptionClause(this);
53073 			else return visitor.visitChildren(this);
53074 		}
53075 	}
53076 
53077 	public final StatusOptionClauseContext statusOptionClause() throws RecognitionException {
53078 		StatusOptionClauseContext _localctx = new StatusOptionClauseContext(_ctx, getState());
53079 		enterRule(_localctx, 994, RULE_statusOptionClause);
53080 		int _la;
53081 		try {
53082 			enterOuterAlt(_localctx, 1);
53083 			{
53084 			setState(7152);
53085 			_la = _input.LA(1);
53086 			if ( !(_la==ENABLE || _la==DISABLE) ) {
53087 			_errHandler.recoverInline(this);
53088 			}
53089 			else {
53090 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53091 				_errHandler.reportMatch(this);
53092 				consume();
53093 			}
53094 			}
53095 		}
53096 		catch (RecognitionException re) {
53097 			_localctx.exception = re;
53098 			_errHandler.reportError(this, re);
53099 			_errHandler.recover(this, re);
53100 		}
53101 		finally {
53102 			exitRule();
53103 		}
53104 		return _localctx;
53105 	}
53106 
53107 	public static class SetOptionClauseContext extends ParserRuleContext {
53108 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
53109 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
53110 		public TerminalNode EQ_(int i) {
53111 			return getToken(SQLServerStatementParser.EQ_, i);
53112 		}
53113 		public List<StringLiteralsContext> stringLiterals() {
53114 			return getRuleContexts(StringLiteralsContext.class);
53115 		}
53116 		public StringLiteralsContext stringLiterals(int i) {
53117 			return getRuleContext(StringLiteralsContext.class,i);
53118 		}
53119 		public HashedPasswordContext hashedPassword() {
53120 			return getRuleContext(HashedPasswordContext.class,0);
53121 		}
53122 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
53123 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
53124 		public List<PasswordOptionClauseContext> passwordOptionClause() {
53125 			return getRuleContexts(PasswordOptionClauseContext.class);
53126 		}
53127 		public PasswordOptionClauseContext passwordOptionClause(int i) {
53128 			return getRuleContext(PasswordOptionClauseContext.class,i);
53129 		}
53130 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
53131 		public DatabaseNameContext databaseName() {
53132 			return getRuleContext(DatabaseNameContext.class,0);
53133 		}
53134 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
53135 		public IdentifierContext identifier() {
53136 			return getRuleContext(IdentifierContext.class,0);
53137 		}
53138 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
53139 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
53140 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
53141 		}
53142 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
53143 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
53144 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
53145 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
53146 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
53147 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
53148 		public SetOptionClauseContext(ParserRuleContext parent, int invokingState) {
53149 			super(parent, invokingState);
53150 		}
53151 		@Override public int getRuleIndex() { return RULE_setOptionClause; }
53152 		@Override
53153 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53154 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetOptionClause(this);
53155 			else return visitor.visitChildren(this);
53156 		}
53157 	}
53158 
53159 	public final SetOptionClauseContext setOptionClause() throws RecognitionException {
53160 		SetOptionClauseContext _localctx = new SetOptionClauseContext(_ctx, getState());
53161 		enterRule(_localctx, 996, RULE_setOptionClause);
53162 		int _la;
53163 		try {
53164 			setState(7191);
53165 			_errHandler.sync(this);
53166 			switch (_input.LA(1)) {
53167 			case PASSWORD:
53168 				enterOuterAlt(_localctx, 1);
53169 				{
53170 				setState(7154);
53171 				match(PASSWORD);
53172 				setState(7155);
53173 				match(EQ_);
53174 				setState(7160);
53175 				_errHandler.sync(this);
53176 				switch (_input.LA(1)) {
53177 				case STRING_:
53178 				case NCHAR_TEXT:
53179 					{
53180 					setState(7156);
53181 					stringLiterals();
53182 					}
53183 					break;
53184 				case HEX_DIGIT_:
53185 					{
53186 					setState(7157);
53187 					hashedPassword();
53188 					setState(7158);
53189 					match(HASHED);
53190 					}
53191 					break;
53192 				default:
53193 					throw new NoViableAltException(this);
53194 				}
53195 				setState(7169);
53196 				_errHandler.sync(this);
53197 				switch (_input.LA(1)) {
53198 				case OLD_PASSWORD:
53199 					{
53200 					setState(7162);
53201 					match(OLD_PASSWORD);
53202 					setState(7163);
53203 					match(EQ_);
53204 					setState(7164);
53205 					stringLiterals();
53206 					}
53207 					break;
53208 				case MUST_CHANGE:
53209 				case UNLOCK:
53210 					{
53211 					setState(7165);
53212 					passwordOptionClause();
53213 					setState(7167);
53214 					_errHandler.sync(this);
53215 					_la = _input.LA(1);
53216 					if (_la==MUST_CHANGE || _la==UNLOCK) {
53217 						{
53218 						setState(7166);
53219 						passwordOptionClause();
53220 						}
53221 					}
53222 
53223 					}
53224 					break;
53225 				case EOF:
53226 				case COMMA_:
53227 				case SEMI_:
53228 					break;
53229 				default:
53230 					break;
53231 				}
53232 				}
53233 				break;
53234 			case DEFAULT_DATABASE:
53235 				enterOuterAlt(_localctx, 2);
53236 				{
53237 				setState(7171);
53238 				match(DEFAULT_DATABASE);
53239 				setState(7172);
53240 				match(EQ_);
53241 				setState(7173);
53242 				databaseName();
53243 				}
53244 				break;
53245 			case DEFAULT_LANGUAGE:
53246 				enterOuterAlt(_localctx, 3);
53247 				{
53248 				setState(7174);
53249 				match(DEFAULT_LANGUAGE);
53250 				setState(7175);
53251 				match(EQ_);
53252 				setState(7176);
53253 				identifier();
53254 				}
53255 				break;
53256 			case NAME:
53257 				enterOuterAlt(_localctx, 4);
53258 				{
53259 				setState(7177);
53260 				match(NAME);
53261 				setState(7178);
53262 				match(EQ_);
53263 				setState(7179);
53264 				ignoredNameIdentifier();
53265 				}
53266 				break;
53267 			case CHECK_POLICY:
53268 				enterOuterAlt(_localctx, 5);
53269 				{
53270 				setState(7180);
53271 				match(CHECK_POLICY);
53272 				setState(7181);
53273 				match(EQ_);
53274 				setState(7182);
53275 				_la = _input.LA(1);
53276 				if ( !(_la==ON || _la==OFF) ) {
53277 				_errHandler.recoverInline(this);
53278 				}
53279 				else {
53280 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53281 					_errHandler.reportMatch(this);
53282 					consume();
53283 				}
53284 				}
53285 				break;
53286 			case CHECK_EXPIRATION:
53287 				enterOuterAlt(_localctx, 6);
53288 				{
53289 				setState(7183);
53290 				match(CHECK_EXPIRATION);
53291 				setState(7184);
53292 				match(EQ_);
53293 				setState(7185);
53294 				_la = _input.LA(1);
53295 				if ( !(_la==ON || _la==OFF) ) {
53296 				_errHandler.recoverInline(this);
53297 				}
53298 				else {
53299 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53300 					_errHandler.reportMatch(this);
53301 					consume();
53302 				}
53303 				}
53304 				break;
53305 			case CREDENTIAL:
53306 				enterOuterAlt(_localctx, 7);
53307 				{
53308 				setState(7186);
53309 				match(CREDENTIAL);
53310 				setState(7187);
53311 				match(EQ_);
53312 				setState(7188);
53313 				identifier();
53314 				}
53315 				break;
53316 			case NO:
53317 				enterOuterAlt(_localctx, 8);
53318 				{
53319 				setState(7189);
53320 				match(NO);
53321 				setState(7190);
53322 				match(CREDENTIAL);
53323 				}
53324 				break;
53325 			default:
53326 				throw new NoViableAltException(this);
53327 			}
53328 		}
53329 		catch (RecognitionException re) {
53330 			_localctx.exception = re;
53331 			_errHandler.reportError(this, re);
53332 			_errHandler.recover(this, re);
53333 		}
53334 		finally {
53335 			exitRule();
53336 		}
53337 		return _localctx;
53338 	}
53339 
53340 	public static class PasswordOptionClauseContext extends ParserRuleContext {
53341 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
53342 		public TerminalNode UNLOCK() { return getToken(SQLServerStatementParser.UNLOCK, 0); }
53343 		public PasswordOptionClauseContext(ParserRuleContext parent, int invokingState) {
53344 			super(parent, invokingState);
53345 		}
53346 		@Override public int getRuleIndex() { return RULE_passwordOptionClause; }
53347 		@Override
53348 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53349 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPasswordOptionClause(this);
53350 			else return visitor.visitChildren(this);
53351 		}
53352 	}
53353 
53354 	public final PasswordOptionClauseContext passwordOptionClause() throws RecognitionException {
53355 		PasswordOptionClauseContext _localctx = new PasswordOptionClauseContext(_ctx, getState());
53356 		enterRule(_localctx, 998, RULE_passwordOptionClause);
53357 		int _la;
53358 		try {
53359 			enterOuterAlt(_localctx, 1);
53360 			{
53361 			setState(7193);
53362 			_la = _input.LA(1);
53363 			if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
53364 			_errHandler.recoverInline(this);
53365 			}
53366 			else {
53367 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53368 				_errHandler.reportMatch(this);
53369 				consume();
53370 			}
53371 			}
53372 		}
53373 		catch (RecognitionException re) {
53374 			_localctx.exception = re;
53375 			_errHandler.reportError(this, re);
53376 			_errHandler.recover(this, re);
53377 		}
53378 		finally {
53379 			exitRule();
53380 		}
53381 		return _localctx;
53382 	}
53383 
53384 	public static class CryptographicCredentialsOptionClauseContext extends ParserRuleContext {
53385 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
53386 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
53387 		public IdentifierContext identifier() {
53388 			return getRuleContext(IdentifierContext.class,0);
53389 		}
53390 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
53391 		public CryptographicCredentialsOptionClauseContext(ParserRuleContext parent, int invokingState) {
53392 			super(parent, invokingState);
53393 		}
53394 		@Override public int getRuleIndex() { return RULE_cryptographicCredentialsOptionClause; }
53395 		@Override
53396 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53397 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCryptographicCredentialsOptionClause(this);
53398 			else return visitor.visitChildren(this);
53399 		}
53400 	}
53401 
53402 	public final CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() throws RecognitionException {
53403 		CryptographicCredentialsOptionClauseContext _localctx = new CryptographicCredentialsOptionClauseContext(_ctx, getState());
53404 		enterRule(_localctx, 1000, RULE_cryptographicCredentialsOptionClause);
53405 		try {
53406 			setState(7201);
53407 			_errHandler.sync(this);
53408 			switch (_input.LA(1)) {
53409 			case ADD:
53410 				enterOuterAlt(_localctx, 1);
53411 				{
53412 				setState(7195);
53413 				match(ADD);
53414 				setState(7196);
53415 				match(CREDENTIAL);
53416 				setState(7197);
53417 				identifier();
53418 				}
53419 				break;
53420 			case DROP:
53421 				enterOuterAlt(_localctx, 2);
53422 				{
53423 				setState(7198);
53424 				match(DROP);
53425 				setState(7199);
53426 				match(CREDENTIAL);
53427 				setState(7200);
53428 				identifier();
53429 				}
53430 				break;
53431 			default:
53432 				throw new NoViableAltException(this);
53433 			}
53434 		}
53435 		catch (RecognitionException re) {
53436 			_localctx.exception = re;
53437 			_errHandler.reportError(this, re);
53438 			_errHandler.recover(this, re);
53439 		}
53440 		finally {
53441 			exitRule();
53442 		}
53443 		return _localctx;
53444 	}
53445 
53446 	public static class RevertContext extends ParserRuleContext {
53447 		public TerminalNode REVERT() { return getToken(SQLServerStatementParser.REVERT, 0); }
53448 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
53449 		public TerminalNode COOKIE() { return getToken(SQLServerStatementParser.COOKIE, 0); }
53450 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
53451 		public VariableNameContext variableName() {
53452 			return getRuleContext(VariableNameContext.class,0);
53453 		}
53454 		public RevertContext(ParserRuleContext parent, int invokingState) {
53455 			super(parent, invokingState);
53456 		}
53457 		@Override public int getRuleIndex() { return RULE_revert; }
53458 		@Override
53459 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53460 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevert(this);
53461 			else return visitor.visitChildren(this);
53462 		}
53463 	}
53464 
53465 	public final RevertContext revert() throws RecognitionException {
53466 		RevertContext _localctx = new RevertContext(_ctx, getState());
53467 		enterRule(_localctx, 1002, RULE_revert);
53468 		int _la;
53469 		try {
53470 			enterOuterAlt(_localctx, 1);
53471 			{
53472 			setState(7203);
53473 			match(REVERT);
53474 			setState(7208);
53475 			_errHandler.sync(this);
53476 			_la = _input.LA(1);
53477 			if (_la==WITH) {
53478 				{
53479 				setState(7204);
53480 				match(WITH);
53481 				setState(7205);
53482 				match(COOKIE);
53483 				setState(7206);
53484 				match(EQ_);
53485 				setState(7207);
53486 				variableName();
53487 				}
53488 			}
53489 
53490 			}
53491 		}
53492 		catch (RecognitionException re) {
53493 			_localctx.exception = re;
53494 			_errHandler.reportError(this, re);
53495 			_errHandler.recover(this, re);
53496 		}
53497 		finally {
53498 			exitRule();
53499 		}
53500 		return _localctx;
53501 	}
53502 
53503 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
53504 		switch (ruleIndex) {
53505 		case 49:
53506 			return expr_sempred((ExprContext)_localctx, predIndex);
53507 		case 54:
53508 			return booleanPrimary_sempred((BooleanPrimaryContext)_localctx, predIndex);
53509 		case 57:
53510 			return bitExpr_sempred((BitExprContext)_localctx, predIndex);
53511 		case 58:
53512 			return simpleExpr_sempred((SimpleExprContext)_localctx, predIndex);
53513 		}
53514 		return true;
53515 	}
53516 	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
53517 		switch (predIndex) {
53518 		case 0:
53519 			return precpred(_ctx, 5);
53520 		case 1:
53521 			return precpred(_ctx, 4);
53522 		case 2:
53523 			return precpred(_ctx, 3);
53524 		}
53525 		return true;
53526 	}
53527 	private boolean booleanPrimary_sempred(BooleanPrimaryContext _localctx, int predIndex) {
53528 		switch (predIndex) {
53529 		case 3:
53530 			return precpred(_ctx, 5);
53531 		case 4:
53532 			return precpred(_ctx, 4);
53533 		case 5:
53534 			return precpred(_ctx, 3);
53535 		case 6:
53536 			return precpred(_ctx, 2);
53537 		}
53538 		return true;
53539 	}
53540 	private boolean bitExpr_sempred(BitExprContext _localctx, int predIndex) {
53541 		switch (predIndex) {
53542 		case 7:
53543 			return precpred(_ctx, 11);
53544 		case 8:
53545 			return precpred(_ctx, 10);
53546 		case 9:
53547 			return precpred(_ctx, 9);
53548 		case 10:
53549 			return precpred(_ctx, 8);
53550 		case 11:
53551 			return precpred(_ctx, 7);
53552 		case 12:
53553 			return precpred(_ctx, 6);
53554 		case 13:
53555 			return precpred(_ctx, 5);
53556 		case 14:
53557 			return precpred(_ctx, 4);
53558 		case 15:
53559 			return precpred(_ctx, 3);
53560 		case 16:
53561 			return precpred(_ctx, 2);
53562 		}
53563 		return true;
53564 	}
53565 	private boolean simpleExpr_sempred(SimpleExprContext _localctx, int predIndex) {
53566 		switch (predIndex) {
53567 		case 17:
53568 			return precpred(_ctx, 7);
53569 		}
53570 		return true;
53571 	}
53572 
53573 	private static final String _serializedATNSegment0 =
53574 		"\u0004\u0001\u02dd\u1c2b\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
53575 		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
53576 		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
53577 		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
53578 		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
53579 		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
53580 		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
53581 		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
53582 		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
53583 		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
53584 		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
53585 		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
53586 		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
53587 		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
53588 		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
53589 		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
53590 		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
53591 		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
53592 		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
53593 		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
53594 		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
53595 		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
53596 		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
53597 		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
53598 		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
53599 		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
53600 		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
53601 		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
53602 		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
53603 		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
53604 		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
53605 		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
53606 		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
53607 		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
53608 		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
53609 		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
53610 		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
53611 		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
53612 		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
53613 		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
53614 		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
53615 		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
53616 		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
53617 		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
53618 		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
53619 		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
53620 		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
53621 		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
53622 		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
53623 		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
53624 		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
53625 		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
53626 		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
53627 		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
53628 		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
53629 		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
53630 		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
53631 		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
53632 		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
53633 		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
53634 		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
53635 		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
53636 		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
53637 		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
53638 		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
53639 		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
53640 		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
53641 		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
53642 		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
53643 		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
53644 		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
53645 		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
53646 		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
53647 		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
53648 		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
53649 		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
53650 		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
53651 		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
53652 		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
53653 		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
53654 		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
53655 		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
53656 		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
53657 		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
53658 		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
53659 		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
53660 		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
53661 		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
53662 		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
53663 		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
53664 		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
53665 		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
53666 		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
53667 		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
53668 		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
53669 		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
53670 		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
53671 		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
53672 		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
53673 		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
53674 		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
53675 		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
53676 		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
53677 		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
53678 		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
53679 		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
53680 		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
53681 		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
53682 		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
53683 		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
53684 		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
53685 		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
53686 		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
53687 		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
53688 		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
53689 		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
53690 		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
53691 		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
53692 		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
53693 		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
53694 		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
53695 		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
53696 		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
53697 		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
53698 		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
53699 		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
53700 		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
53701 		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
53702 		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
53703 		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
53704 		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
53705 		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
53706 		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
53707 		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
53708 		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
53709 		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
53710 		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
53711 		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
53712 		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
53713 		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
53714 		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
53715 		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
53716 		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
53717 		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
53718 		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
53719 		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
53720 		"\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de\u0002\u01df\u0007"+
53721 		"\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1\u0002\u01e2\u0007"+
53722 		"\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4\u0002\u01e5\u0007"+
53723 		"\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7\u0002\u01e8\u0007"+
53724 		"\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea\u0002\u01eb\u0007"+
53725 		"\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed\u0002\u01ee\u0007"+
53726 		"\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0\u0002\u01f1\u0007"+
53727 		"\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3\u0002\u01f4\u0007"+
53728 		"\u01f4\u0002\u01f5\u0007\u01f5\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53729 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53730 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53731 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53732 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53733 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53734 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53735 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53736 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53737 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53738 		"\u0000\u0001\u0000\u0003\u0000\u0428\b\u0000\u0001\u0000\u0003\u0000\u042b"+
53739 		"\b\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
53740 		"\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
53741 		"\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u043b\b\u0002\u0001\u0003\u0001"+
53742 		"\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001"+
53743 		"\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0447\b\u0005\u0001\u0005\u0001"+
53744 		"\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u044d\b\u0005\u0003\u0005\u044f"+
53745 		"\b\u0005\u0003\u0005\u0451\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
53746 		"\u0001\u0006\u0001\u0006\u0003\u0006\u0458\b\u0006\u0001\u0007\u0001\u0007"+
53747 		"\u0001\u0007\u0001\u0007\u0003\u0007\u045e\b\u0007\u0003\u0007\u0460\b"+
53748 		"\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+
53749 		"\u0007\u0003\u0007\u0468\b\u0007\u0001\b\u0001\b\u0003\b\u046c\b\b\u0001"+
53750 		"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0474\b\t\u0001\n\u0001"+
53751 		"\n\u0003\n\u0478\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003"+
53752 		"\u000b\u047e\b\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
53753 		"\r\u0001\r\u0001\r\u0003\r\u0489\b\r\u0001\u000e\u0001\u000e\u0001\u000f"+
53754 		"\u0003\u000f\u048e\b\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010"+
53755 		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+
53756 		"\u0499\b\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013"+
53757 		"\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0003\u0015"+
53758 		"\u04a5\b\u0015\u0001\u0016\u0001\u0016\u0003\u0016\u04a9\b\u0016\u0001"+
53759 		"\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001"+
53760 		"\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u04b6"+
53761 		"\b\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0003"+
53762 		"\u001c\u04bd\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u04c2"+
53763 		"\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u04c7\b\u001d"+
53764 		"\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e"+
53765 		"\u04ce\b\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f"+
53766 		"\u0003\u001f\u04d5\b\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001"+
53767 		" \u0003 \u04dc\b \u0001 \u0003 \u04df\b \u0001 \u0003 \u04e2\b \u0001"+
53768 		" \u0001 \u0001!\u0001!\u0001!\u0003!\u04e9\b!\u0001!\u0001!\u0001\"\u0001"+
53769 		"\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0003$\u04f4\b$\u0001$\u0001$\u0001"+
53770 		"$\u0003$\u04f9\b$\u0001$\u0001$\u0003$\u04fd\b$\u0001%\u0001%\u0001%\u0001"+
53771 		"%\u0001%\u0001&\u0001&\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0005"+
53772 		"(\u050c\b(\n(\f(\u050f\t(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0005"+
53773 		")\u0517\b)\n)\f)\u051a\t)\u0001)\u0001)\u0001*\u0003*\u051f\b*\u0001*"+
53774 		"\u0001*\u0001*\u0005*\u0524\b*\n*\f*\u0527\t*\u0001*\u0003*\u052a\b*\u0001"+
53775 		"+\u0001+\u0001,\u0001,\u0001-\u0001-\u0001.\u0001.\u0001.\u0003.\u0535"+
53776 		"\b.\u0001/\u0001/\u0001/\u0001/\u0003/\u053b\b/\u0003/\u053d\b/\u0001"+
53777 		"/\u0001/\u00010\u00030\u0542\b0\u00010\u00010\u00011\u00011\u00011\u0001"+
53778 		"1\u00011\u00011\u00011\u00011\u00011\u00031\u054f\b1\u00011\u00011\u0001"+
53779 		"1\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0005"+
53780 		"1\u055d\b1\n1\f1\u0560\t1\u00012\u00012\u00013\u00013\u00014\u00014\u0003"+
53781 		"4\u0568\b4\u00014\u00014\u00014\u00015\u00015\u00016\u00016\u00016\u0001"+
53782 		"6\u00016\u00016\u00036\u0575\b6\u00016\u00016\u00016\u00016\u00016\u0001"+
53783 		"6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00056\u0584\b6\n6"+
53784 		"\f6\u0587\t6\u00017\u00017\u00018\u00018\u00038\u058d\b8\u00018\u0001"+
53785 		"8\u00018\u00018\u00018\u00038\u0594\b8\u00018\u00018\u00018\u00018\u0001"+
53786 		"8\u00058\u059b\b8\n8\f8\u059e\t8\u00018\u00018\u00018\u00018\u00038\u05a4"+
53787 		"\b8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00038\u05ad\b8\u0001"+
53788 		"8\u00018\u00018\u00018\u00038\u05b3\b8\u00018\u00038\u05b6\b8\u00019\u0001"+
53789 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
53790 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
53791 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
53792 		"9\u00019\u00059\u05d9\b9\n9\f9\u05dc\t9\u0001:\u0001:\u0001:\u0001:\u0001"+
53793 		":\u0001:\u0001:\u0001:\u0001:\u0003:\u05e7\b:\u0001:\u0001:\u0001:\u0001"+
53794 		":\u0005:\u05ed\b:\n:\f:\u05f0\t:\u0001:\u0001:\u0001:\u0003:\u05f5\b:"+
53795 		"\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0003:\u05ff"+
53796 		"\b:\u0001:\u0001:\u0001:\u0005:\u0604\b:\n:\f:\u0607\t:\u0001;\u0001;"+
53797 		"\u0001;\u0003;\u060c\b;\u0001<\u0001<\u0001<\u0003<\u0611\b<\u0001<\u0001"+
53798 		"<\u0001<\u0005<\u0616\b<\n<\f<\u0619\t<\u0001<\u0003<\u061c\b<\u0001<"+
53799 		"\u0001<\u0001=\u0001=\u0001>\u0001>\u0001?\u0001?\u0001?\u0001?\u0001"+
53800 		"?\u0001?\u0001?\u0003?\u062b\b?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+
53801 		"@\u0001@\u0001@\u0001@\u0001@\u0001@\u0003@\u0638\b@\u0001@\u0001@\u0001"+
53802 		"A\u0001A\u0003A\u063e\bA\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+
53803 		"B\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0003C\u064e\bC\u0001"+
53804 		"C\u0001C\u0001D\u0001D\u0003D\u0654\bD\u0001E\u0001E\u0001E\u0001E\u0001"+
53805 		"E\u0005E\u065b\bE\nE\fE\u065e\tE\u0001E\u0003E\u0661\bE\u0003E\u0663\b"+
53806 		"E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0005F\u066c\bF\nF"+
53807 		"\fF\u066f\tF\u0001F\u0003F\u0672\bF\u0001F\u0001F\u0001G\u0001G\u0001"+
53808 		"G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0003H\u0680\bH\u0001"+
53809 		"I\u0001I\u0001I\u0001I\u0001I\u0005I\u0687\bI\nI\fI\u068a\tI\u0001I\u0001"+
53810 		"I\u0003I\u068e\bI\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0003"+
53811 		"J\u0697\bJ\u0001J\u0001J\u0003J\u069b\bJ\u0001K\u0001K\u0001K\u0001K\u0001"+
53812 		"K\u0005K\u06a2\bK\nK\fK\u06a5\tK\u0001K\u0001K\u0001L\u0001L\u0001L\u0003"+
53813 		"L\u06ac\bL\u0001L\u0001L\u0003L\u06b0\bL\u0001M\u0001M\u0001M\u0001M\u0001"+
53814 		"M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0003M\u06bd\bM\u0001M\u0001"+
53815 		"M\u0001M\u0003M\u06c2\bM\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+
53816 		"M\u0001M\u0005M\u06cc\bM\nM\fM\u06cf\tM\u0001M\u0001M\u0003M\u06d3\bM"+
53817 		"\u0001N\u0001N\u0001N\u0001N\u0001N\u0005N\u06da\bN\nN\fN\u06dd\tN\u0001"+
53818 		"N\u0003N\u06e0\bN\u0001N\u0001N\u0001O\u0001O\u0001O\u0003O\u06e7\bO\u0001"+
53819 		"O\u0001O\u0001O\u0001O\u0001O\u0003O\u06ee\bO\u0001P\u0001P\u0003P\u06f2"+
53820 		"\bP\u0001P\u0004P\u06f5\bP\u000bP\fP\u06f6\u0001P\u0003P\u06fa\bP\u0001"+
53821 		"P\u0001P\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001"+
53822 		"S\u0001S\u0001S\u0001S\u0003S\u070a\bS\u0001T\u0001T\u0001T\u0001T\u0001"+
53823 		"T\u0005T\u0711\bT\nT\fT\u0714\tT\u0001T\u0001T\u0001T\u0001T\u0001T\u0001"+
53824 		"T\u0001T\u0001T\u0001T\u0003T\u071f\bT\u0003T\u0721\bT\u0001U\u0001U\u0001"+
53825 		"U\u0003U\u0726\bU\u0001U\u0001U\u0003U\u072a\bU\u0001U\u0003U\u072d\b"+
53826 		"U\u0001V\u0001V\u0001V\u0003V\u0732\bV\u0001V\u0001V\u0001V\u0001V\u0001"+
53827 		"V\u0001V\u0001V\u0003V\u073b\bV\u0001V\u0001V\u0001V\u0003V\u0740\bV\u0001"+
53828 		"W\u0001W\u0001X\u0001X\u0001X\u0001X\u0003X\u0748\bX\u0001X\u0001X\u0001"+
53829 		"Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0003Y\u0754\bY\u0001"+
53830 		"Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0003Z\u075d\bZ\u0001Z\u0001"+
53831 		"Z\u0001Z\u0001Z\u0003Z\u0763\bZ\u0001[\u0001[\u0001[\u0001[\u0001[\u0003"+
53832 		"[\u076a\b[\u0001[\u0001[\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]"+
53833 		"\u0003]\u0774\b]\u0001]\u0003]\u0777\b]\u0001]\u0003]\u077a\b]\u0001]"+
53834 		"\u0001]\u0001^\u0001^\u0001^\u0001^\u0001^\u0005^\u0783\b^\n^\f^\u0786"+
53835 		"\t^\u0001_\u0001_\u0001_\u0001`\u0001`\u0003`\u078d\b`\u0001a\u0001a\u0001"+
53836 		"a\u0001a\u0001a\u0001b\u0001b\u0003b\u0796\bb\u0001c\u0001c\u0001c\u0001"+
53837 		"c\u0001c\u0001c\u0003c\u079e\bc\u0001d\u0001d\u0001d\u0001d\u0001d\u0001"+
53838 		"d\u0003d\u07a6\bd\u0001e\u0001e\u0003e\u07aa\be\u0001f\u0001f\u0001f\u0001"+
53839 		"f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0001f\u0003f\u07b7\bf\u0003"+
53840 		"f\u07b9\bf\u0001g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0003h\u07c2"+
53841 		"\bh\u0001i\u0001i\u0001i\u0001j\u0001j\u0001k\u0001k\u0001k\u0001l\u0001"+
53842 		"l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0005m\u07d5\bm\nm"+
53843 		"\fm\u07d8\tm\u0001n\u0001n\u0003n\u07dc\bn\u0001o\u0001o\u0001o\u0001"+
53844 		"o\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0003p\u07e8\bp\u0001p\u0001"+
53845 		"p\u0001p\u0001p\u0001p\u0001p\u0001q\u0001q\u0001q\u0001q\u0001q\u0003"+
53846 		"q\u07f5\bq\u0001r\u0001r\u0001s\u0001s\u0001s\u0005s\u07fc\bs\ns\fs\u07ff"+
53847 		"\ts\u0001t\u0001t\u0001u\u0001u\u0001v\u0001v\u0001v\u0001v\u0001v\u0001"+
53848 		"v\u0003v\u080b\bv\u0001w\u0001w\u0001x\u0001x\u0001y\u0001y\u0001z\u0001"+
53849 		"z\u0001{\u0001{\u0001|\u0001|\u0001|\u0001}\u0001}\u0001~\u0001~\u0001"+
53850 		"\u007f\u0001\u007f\u0003\u007f\u0820\b\u007f\u0001\u007f\u0001\u007f\u0001"+
53851 		"\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u0829"+
53852 		"\b\u0080\u0001\u0081\u0001\u0081\u0003\u0081\u082d\b\u0081\u0001\u0082"+
53853 		"\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083"+
53854 		"\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+
53855 		"\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+
53856 		"\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0003\u0085\u0846\b\u0085"+
53857 		"\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086"+
53858 		"\u0001\u0086\u0001\u0086\u0003\u0086\u0850\b\u0086\u0001\u0086\u0001\u0086"+
53859 		"\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087"+
53860 		"\u0003\u0087\u085a\b\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+
53861 		"\u0001\u0088\u0001\u0088\u0001\u0088\u0003\u0088\u0863\b\u0088\u0001\u0088"+
53862 		"\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089"+
53863 		"\u0001\u0089\u0001\u0089\u0001\u0089\u0005\u0089\u086f\b\u0089\n\u0089"+
53864 		"\f\u0089\u0872\t\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a"+
53865 		"\u0001\u008a\u0003\u008a\u0879\b\u008a\u0001\u008a\u0001\u008a\u0001\u008a"+
53866 		"\u0001\u008a\u0003\u008a\u087f\b\u008a\u0001\u008b\u0001\u008b\u0001\u008b"+
53867 		"\u0001\u008b\u0005\u008b\u0885\b\u008b\n\u008b\f\u008b\u0888\t\u008b\u0001"+
53868 		"\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0005"+
53869 		"\u008c\u0890\b\u008c\n\u008c\f\u008c\u0893\t\u008c\u0001\u008d\u0001\u008d"+
53870 		"\u0001\u008d\u0001\u008d\u0003\u008d\u0899\b\u008d\u0001\u008d\u0001\u008d"+
53871 		"\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+
53872 		"\u0003\u008e\u08a3\b\u008e\u0001\u008e\u0005\u008e\u08a6\b\u008e\n\u008e"+
53873 		"\f\u008e\u08a9\t\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
53874 		"\u0001\u008f\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+
53875 		"\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+
53876 		"\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092"+
53877 		"\u0001\u0092\u0001\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093"+
53878 		"\u0005\u0093\u08c7\b\u0093\n\u0093\f\u0093\u08ca\t\u0093\u0001\u0094\u0001"+
53879 		"\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u0094\u08d2"+
53880 		"\b\u0094\u0001\u0094\u0003\u0094\u08d5\b\u0094\u0001\u0095\u0001\u0095"+
53881 		"\u0001\u0095\u0001\u0095\u0001\u0095\u0003\u0095\u08dc\b\u0095\u0001\u0095"+
53882 		"\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u08e3\b\u0096"+
53883 		"\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0003\u0097"+
53884 		"\u08ea\b\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098"+
53885 		"\u0001\u0098\u0001\u0098\u0003\u0098\u08f3\b\u0098\u0001\u0098\u0001\u0098"+
53886 		"\u0001\u0098\u0005\u0098\u08f8\b\u0098\n\u0098\f\u0098\u08fb\t\u0098\u0001"+
53887 		"\u0099\u0001\u0099\u0001\u0099\u0003\u0099\u0900\b\u0099\u0001\u0099\u0001"+
53888 		"\u0099\u0001\u0099\u0005\u0099\u0905\b\u0099\n\u0099\f\u0099\u0908\t\u0099"+
53889 		"\u0001\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u090d\b\u009a\u0001\u009a"+
53890 		"\u0001\u009a\u0001\u009a\u0005\u009a\u0912\b\u009a\n\u009a\f\u009a\u0915"+
53891 		"\t\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u091a\b\u009b"+
53892 		"\u0001\u009b\u0001\u009b\u0001\u009b\u0005\u009b\u091f\b\u009b\n\u009b"+
53893 		"\f\u009b\u0922\t\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0003\u009c"+
53894 		"\u0927\b\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0005\u009c\u092c\b"+
53895 		"\u009c\n\u009c\f\u009c\u092f\t\u009c\u0001\u009c\u0001\u009c\u0001\u009c"+
53896 		"\u0001\u009c\u0003\u009c\u0935\b\u009c\u0003\u009c\u0937\b\u009c\u0001"+
53897 		"\u009d\u0001\u009d\u0001\u009d\u0003\u009d\u093c\b\u009d\u0001\u009d\u0001"+
53898 		"\u009d\u0001\u009d\u0005\u009d\u0941\b\u009d\n\u009d\f\u009d\u0944\t\u009d"+
53899 		"\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009f\u0001\u009f"+
53900 		"\u0001\u009f\u0003\u009f\u094d\b\u009f\u0001\u009f\u0001\u009f\u0001\u00a0"+
53901 		"\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1"+
53902 		"\u0001\u00a1\u0003\u00a1\u0959\b\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1"+
53903 		"\u0005\u00a1\u095e\b\u00a1\n\u00a1\f\u00a1\u0961\t\u00a1\u0001\u00a1\u0003"+
53904 		"\u00a1\u0964\b\u00a1\u0003\u00a1\u0966\b\u00a1\u0001\u00a1\u0003\u00a1"+
53905 		"\u0969\b\u00a1\u0001\u00a2\u0001\u00a2\u0003\u00a2\u096d\b\u00a2\u0001"+
53906 		"\u00a2\u0003\u00a2\u0970\b\u00a2\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001"+
53907 		"\u00a3\u0003\u00a3\u0976\b\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0003"+
53908 		"\u00a3\u097b\b\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001"+
53909 		"\u00a3\u0001\u00a3\u0001\u00a3\u0005\u00a3\u0984\b\u00a3\n\u00a3\f\u00a3"+
53910 		"\u0987\t\u00a3\u0001\u00a3\u0003\u00a3\u098a\b\u00a3\u0003\u00a3\u098c"+
53911 		"\b\u00a3\u0001\u00a4\u0003\u00a4\u098f\b\u00a4\u0001\u00a4\u0004\u00a4"+
53912 		"\u0992\b\u00a4\u000b\u00a4\f\u00a4\u0993\u0001\u00a5\u0001\u00a5\u0001"+
53913 		"\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+
53914 		"\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0003\u00a5\u09a3"+
53915 		"\b\u00a5\u0001\u00a6\u0001\u00a6\u0003\u00a6\u09a7\b\u00a6\u0001\u00a7"+
53916 		"\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8"+
53917 		"\u0001\u00a8\u0005\u00a8\u09b1\b\u00a8\n\u00a8\f\u00a8\u09b4\t\u00a8\u0001"+
53918 		"\u00a8\u0001\u00a8\u0003\u00a8\u09b8\b\u00a8\u0001\u00a8\u0001\u00a8\u0001"+
53919 		"\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u09c1"+
53920 		"\b\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0005\u00aa\u09c6\b\u00aa"+
53921 		"\n\u00aa\f\u00aa\u09c9\t\u00aa\u0001\u00aa\u0001\u00aa\u0003\u00aa\u09cd"+
53922 		"\b\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+
53923 		"\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+
53924 		"\u00ab\u0001\u00ab\u0003\u00ab\u09dc\b\u00ab\u0001\u00ab\u0001\u00ab\u0001"+
53925 		"\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003"+
53926 		"\u00ab\u09e6\b\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+
53927 		"\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003\u00ab\u09f1"+
53928 		"\b\u00ab\u0001\u00ab\u0003\u00ab\u09f4\b\u00ab\u0001\u00ab\u0001\u00ab"+
53929 		"\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab"+
53930 		"\u0005\u00ab\u09fe\b\u00ab\n\u00ab\f\u00ab\u0a01\t\u00ab\u0001\u00ab\u0003"+
53931 		"\u00ab\u0a04\b\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
53932 		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
53933 		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0003"+
53934 		"\u00ad\u0a16\b\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0003\u00ad\u0a1b"+
53935 		"\b\u00ad\u0001\u00ae\u0001\u00ae\u0003\u00ae\u0a1f\b\u00ae\u0001\u00ae"+
53936 		"\u0001\u00ae\u0001\u00ae\u0003\u00ae\u0a24\b\u00ae\u0001\u00af\u0001\u00af"+
53937 		"\u0003\u00af\u0a28\b\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af"+
53938 		"\u0001\u00af\u0003\u00af\u0a2f\b\u00af\u0001\u00af\u0005\u00af\u0a32\b"+
53939 		"\u00af\n\u00af\f\u00af\u0a35\t\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
53940 		"\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0a3c\b\u00b0\u0001\u00b0\u0001\u00b0"+
53941 		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0"+
53942 		"\u0a45\b\u00b0\u0001\u00b1\u0001\u00b1\u0003\u00b1\u0a49\b\u00b1\u0001"+
53943 		"\u00b1\u0001\u00b1\u0003\u00b1\u0a4d\b\u00b1\u0001\u00b2\u0003\u00b2\u0a50"+
53944 		"\b\u00b2\u0001\u00b2\u0003\u00b2\u0a53\b\u00b2\u0001\u00b2\u0003\u00b2"+
53945 		"\u0a56\b\u00b2\u0001\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4"+
53946 		"\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0005\u00b4"+
53947 		"\u0a62\b\u00b4\n\u00b4\f\u00b4\u0a65\t\u00b4\u0001\u00b4\u0001\u00b4\u0003"+
53948 		"\u00b4\u0a69\b\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0003\u00b5\u0a6e"+
53949 		"\b\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+
53950 		"\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001"+
53951 		"\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0003\u00b9\u0a80"+
53952 		"\b\u00b9\u0003\u00b9\u0a82\b\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba"+
53953 		"\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb"+
53954 		"\u0003\u00bb\u0a8d\b\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+
53955 		"\u0001\u00bb\u0001\u00bb\u0003\u00bb\u0a95\b\u00bb\u0001\u00bb\u0005\u00bb"+
53956 		"\u0a98\b\u00bb\n\u00bb\f\u00bb\u0a9b\t\u00bb\u0001\u00bc\u0001\u00bc\u0001"+
53957 		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0aa3\b\u00bc\u0001"+
53958 		"\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003\u00bd\u0aaa"+
53959 		"\b\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0003\u00be\u0ab0"+
53960 		"\b\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00bf\u0001"+
53961 		"\u00bf\u0001\u00bf\u0003\u00bf\u0ab9\b\u00bf\u0001\u00bf\u0003\u00bf\u0abc"+
53962 		"\b\u00bf\u0001\u00bf\u0003\u00bf\u0abf\b\u00bf\u0001\u00bf\u0003\u00bf"+
53963 		"\u0ac2\b\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+
53964 		"\u0005\u00c0\u0ac9\b\u00c0\n\u00c0\f\u00c0\u0acc\t\u00c0\u0001\u00c0\u0001"+
53965 		"\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0003\u00c1\u0ad3\b\u00c1\u0001"+
53966 		"\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001"+
53967 		"\u00c3\u0003\u00c3\u0adc\b\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0005"+
53968 		"\u00c4\u0ae1\b\u00c4\n\u00c4\f\u00c4\u0ae4\t\u00c4\u0003\u00c4\u0ae6\b"+
53969 		"\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001"+
53970 		"\u00c5\u0003\u00c5\u0aee\b\u00c5\u0003\u00c5\u0af0\b\u00c5\u0001\u00c5"+
53971 		"\u0003\u00c5\u0af3\b\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
53972 		"\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0afd\b\u00c7"+
53973 		"\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0b02\b\u00c7\u0001\u00c8"+
53974 		"\u0001\u00c8\u0001\u00c8\u0003\u00c8\u0b07\b\u00c8\u0001\u00c9\u0001\u00c9"+
53975 		"\u0003\u00c9\u0b0b\b\u00c9\u0001\u00ca\u0003\u00ca\u0b0e\b\u00ca\u0001"+
53976 		"\u00ca\u0001\u00ca\u0003\u00ca\u0b12\b\u00ca\u0001\u00ca\u0003\u00ca\u0b15"+
53977 		"\b\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb\u0b1a\b\u00cb"+
53978 		"\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd"+
53979 		"\u0003\u00cd\u0b22\b\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd"+
53980 		"\u0001\u00cd\u0005\u00cd\u0b29\b\u00cd\n\u00cd\f\u00cd\u0b2c\t\u00cd\u0001"+
53981 		"\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0003\u00ce\u0b33"+
53982 		"\b\u00ce\u0001\u00ce\u0003\u00ce\u0b36\b\u00ce\u0001\u00ce\u0003\u00ce"+
53983 		"\u0b39\b\u00ce\u0001\u00cf\u0003\u00cf\u0b3c\b\u00cf\u0001\u00cf\u0001"+
53984 		"\u00cf\u0001\u00cf\u0001\u00cf\u0003\u00cf\u0b42\b\u00cf\u0001\u00cf\u0001"+
53985 		"\u00cf\u0003\u00cf\u0b46\b\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001"+
53986 		"\u00d0\u0005\u00d0\u0b4c\b\u00d0\n\u00d0\f\u00d0\u0b4f\t\u00d0\u0001\u00d0"+
53987 		"\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1"+
53988 		"\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2"+
53989 		"\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+
53990 		"\u0003\u00d2\u0b64\b\u00d2\u0003\u00d2\u0b66\b\u00d2\u0001\u00d3\u0001"+
53991 		"\u00d3\u0001\u00d3\u0003\u00d3\u0b6b\b\u00d3\u0003\u00d3\u0b6d\b\u00d3"+
53992 		"\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3"+
53993 		"\u0b74\b\u00d3\u0003\u00d3\u0b76\b\u00d3\u0001\u00d3\u0001\u00d3\u0003"+
53994 		"\u00d3\u0b7a\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0005"+
53995 		"\u00d4\u0b80\b\u00d4\n\u00d4\f\u00d4\u0b83\t\u00d4\u0001\u00d4\u0001\u00d4"+
53996 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
53997 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u0b90\b\u00d5\u0001\u00d5"+
53998 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
53999 		"\u0003\u00d5\u0b99\b\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
54000 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
54001 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u0ba8\b\u00d5\u0001\u00d5"+
54002 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u0bae\b\u00d5\u0001\u00d5"+
54003 		"\u0001\u00d5\u0003\u00d5\u0bb2\b\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
54004 		"\u0001\u00d5\u0001\u00d5\u0003\u00d5\u0bb9\b\u00d5\u0001\u00d6\u0001\u00d6"+
54005 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6"+
54006 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d7\u0001\u00d7"+
54007 		"\u0001\u00d7\u0001\u00d7\u0005\u00d7\u0bcb\b\u00d7\n\u00d7\f\u00d7\u0bce"+
54008 		"\t\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001"+
54009 		"\u00d8\u0003\u00d8\u0bd6\b\u00d8\u0001\u00d8\u0003\u00d8\u0bd9\b\u00d8"+
54010 		"\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001\u00d9"+
54011 		"\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da"+
54012 		"\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da"+
54013 		"\u0001\u00da\u0001\u00da\u0003\u00da\u0bef\b\u00da\u0003\u00da\u0bf1\b"+
54014 		"\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+
54015 		"\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0003\u00db\u0bfc\b\u00db\u0001"+
54016 		"\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
54017 		"\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
54018 		"\u00dc\u0001\u00dc\u0003\u00dc\u0c0c\b\u00dc\u0001\u00dc\u0001\u00dc\u0001"+
54019 		"\u00dc\u0003\u00dc\u0c11\b\u00dc\u0005\u00dc\u0c13\b\u00dc\n\u00dc\f\u00dc"+
54020 		"\u0c16\t\u00dc\u0001\u00dc\u0001\u00dc\u0003\u00dc\u0c1a\b\u00dc\u0001"+
54021 		"\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0003\u00dd\u0c21"+
54022 		"\b\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+
54023 		"\u00dd\u0005\u00dd\u0c29\b\u00dd\n\u00dd\f\u00dd\u0c2c\t\u00dd\u0001\u00dd"+
54024 		"\u0001\u00dd\u0001\u00dd\u0001\u00de\u0003\u00de\u0c32\b\u00de\u0001\u00de"+
54025 		"\u0003\u00de\u0c35\b\u00de\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+
54026 		"\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0003\u00df"+
54027 		"\u0c40\b\u00df\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0c44\b\u00e0\u0001"+
54028 		"\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0c49\b\u00e0\u0001\u00e1\u0001"+
54029 		"\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u0c4f\b\u00e1\u0001\u00e1\u0001"+
54030 		"\u00e1\u0001\u00e1\u0003\u00e1\u0c54\b\u00e1\u0001\u00e1\u0003\u00e1\u0c57"+
54031 		"\b\u00e1\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e3\u0001"+
54032 		"\u00e3\u0001\u00e3\u0005\u00e3\u0c60\b\u00e3\n\u00e3\f\u00e3\u0c63\t\u00e3"+
54033 		"\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4"+
54034 		"\u0003\u00e4\u0c6b\b\u00e4\u0001\u00e5\u0001\u00e5\u0003\u00e5\u0c6f\b"+
54035 		"\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+
54036 		"\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001"+
54037 		"\u00e6\u0001\u00e6\u0003\u00e6\u0c7e\b\u00e6\u0001\u00e7\u0001\u00e7\u0001"+
54038 		"\u00e7\u0001\u00e7\u0001\u00e7\u0003\u00e7\u0c85\b\u00e7\u0001\u00e7\u0001"+
54039 		"\u00e7\u0001\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001"+
54040 		"\u00e8\u0001\u00e8\u0001\u00e8\u0003\u00e8\u0c91\b\u00e8\u0001\u00e8\u0003"+
54041 		"\u00e8\u0c94\b\u00e8\u0001\u00e8\u0001\u00e8\u0003\u00e8\u0c98\b\u00e8"+
54042 		"\u0001\u00e8\u0001\u00e8\u0003\u00e8\u0c9c\b\u00e8\u0001\u00e9\u0001\u00e9"+
54043 		"\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0003\u00e9"+
54044 		"\u0ca5\b\u00e9\u0001\u00ea\u0003\u00ea\u0ca8\b\u00ea\u0001\u00ea\u0003"+
54045 		"\u00ea\u0cab\b\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0005\u00ea\u0cb0"+
54046 		"\b\u00ea\n\u00ea\f\u00ea\u0cb3\t\u00ea\u0001\u00eb\u0001\u00eb\u0003\u00eb"+
54047 		"\u0cb7\b\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+
54048 		"\u0005\u00ec\u0cbe\b\u00ec\n\u00ec\f\u00ec\u0cc1\t\u00ec\u0001\u00ec\u0001"+
54049 		"\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+
54050 		"\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+
54051 		"\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0003\u00ed\u0cd4\b\u00ed\u0003"+
54052 		"\u00ed\u0cd6\b\u00ed\u0001\u00ee\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0003"+
54053 		"\u00ef\u0cdc\b\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0005\u00ef\u0ce1"+
54054 		"\b\u00ef\n\u00ef\f\u00ef\u0ce4\t\u00ef\u0001\u00f0\u0001\u00f0\u0003\u00f0"+
54055 		"\u0ce8\b\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0005\u00f0\u0ced\b"+
54056 		"\u00f0\n\u00f0\f\u00f0\u0cf0\t\u00f0\u0001\u00f1\u0003\u00f1\u0cf3\b\u00f1"+
54057 		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u0cf9\b\u00f1"+
54058 		"\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u0cff\b\u00f2"+
54059 		"\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u0d04\b\u00f3\u0001\u00f3"+
54060 		"\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u0d0a\b\u00f3\u0001\u00f3"+
54061 		"\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u0d11\b\u00f3"+
54062 		"\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0d17\b\u00f4"+
54063 		"\u0001\u00f4\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5"+
54064 		"\u0001\u00f5\u0003\u00f5\u0d20\b\u00f5\u0001\u00f6\u0001\u00f6\u0001\u00f6"+
54065 		"\u0001\u00f6\u0001\u00f6\u0003\u00f6\u0d27\b\u00f6\u0003\u00f6\u0d29\b"+
54066 		"\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0003\u00f7\u0d2f"+
54067 		"\b\u00f7\u0001\u00f7\u0003\u00f7\u0d32\b\u00f7\u0001\u00f7\u0003\u00f7"+
54068 		"\u0d35\b\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f8\u0003\u00f8\u0d3a\b"+
54069 		"\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0003"+
54070 		"\u00f9\u0d41\b\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+
54071 		"\u00fa\u0001\u00fa\u0001\u00fa\u0003\u00fa\u0d4a\b\u00fa\u0001\u00fb\u0001"+
54072 		"\u00fb\u0001\u00fb\u0003\u00fb\u0d4f\b\u00fb\u0001\u00fc\u0001\u00fc\u0001"+
54073 		"\u00fc\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0003\u00fd\u0d58"+
54074 		"\b\u00fd\u0003\u00fd\u0d5a\b\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
54075 		"\u0003\u00fe\u0d5f\b\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff"+
54076 		"\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0003\u00ff\u0d68\b\u00ff\u0003\u00ff"+
54077 		"\u0d6a\b\u00ff\u0001\u00ff\u0003\u00ff\u0d6d\b\u00ff\u0001\u0100\u0001"+
54078 		"\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001"+
54079 		"\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001"+
54080 		"\u0100\u0001\u0100\u0001\u0100\u0003\u0100\u0d7f\b\u0100\u0003\u0100\u0d81"+
54081 		"\b\u0100\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001"+
54082 		"\u0101\u0001\u0101\u0001\u0101\u0003\u0101\u0d8b\b\u0101\u0001\u0101\u0001"+
54083 		"\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0003\u0102\u0d92\b\u0102\u0001"+
54084 		"\u0102\u0003\u0102\u0d95\b\u0102\u0001\u0102\u0001\u0102\u0003\u0102\u0d99"+
54085 		"\b\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0005\u0102\u0d9f"+
54086 		"\b\u0102\n\u0102\f\u0102\u0da2\t\u0102\u0003\u0102\u0da4\b\u0102\u0001"+
54087 		"\u0103\u0001\u0103\u0003\u0103\u0da8\b\u0103\u0001\u0103\u0001\u0103\u0001"+
54088 		"\u0103\u0005\u0103\u0dad\b\u0103\n\u0103\f\u0103\u0db0\t\u0103\u0001\u0103"+
54089 		"\u0001\u0103\u0005\u0103\u0db4\b\u0103\n\u0103\f\u0103\u0db7\t\u0103\u0001"+
54090 		"\u0103\u0001\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0005"+
54091 		"\u0104\u0dbf\b\u0104\n\u0104\f\u0104\u0dc2\t\u0104\u0001\u0104\u0001\u0104"+
54092 		"\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+
54093 		"\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+
54094 		"\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+
54095 		"\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0003\u0104"+
54096 		"\u0ddd\b\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105"+
54097 		"\u0001\u0105\u0003\u0105\u0de5\b\u0105\u0001\u0106\u0001\u0106\u0001\u0106"+
54098 		"\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106"+
54099 		"\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+
54100 		"\u0001\u0107\u0003\u0107\u0df7\b\u0107\u0003\u0107\u0df9\b\u0107\u0001"+
54101 		"\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0003\u0107\u0e00"+
54102 		"\b\u0107\u0001\u0107\u0003\u0107\u0e03\b\u0107\u0003\u0107\u0e05\b\u0107"+
54103 		"\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0003\u0107"+
54104 		"\u0e0c\b\u0107\u0003\u0107\u0e0e\b\u0107\u0001\u0108\u0001\u0108\u0001"+
54105 		"\u0108\u0003\u0108\u0e13\b\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0005"+
54106 		"\u0108\u0e18\b\u0108\n\u0108\f\u0108\u0e1b\t\u0108\u0001\u0109\u0001\u0109"+
54107 		"\u0003\u0109\u0e1f\b\u0109\u0001\u0109\u0003\u0109\u0e22\b\u0109\u0001"+
54108 		"\u0109\u0001\u0109\u0003\u0109\u0e26\b\u0109\u0001\u010a\u0001\u010a\u0001"+
54109 		"\u010a\u0001\u010a\u0001\u010a\u0005\u010a\u0e2d\b\u010a\n\u010a\f\u010a"+
54110 		"\u0e30\t\u010a\u0003\u010a\u0e32\b\u010a\u0001\u010b\u0001\u010b\u0001"+
54111 		"\u010b\u0001\u010b\u0005\u010b\u0e38\b\u010b\n\u010b\f\u010b\u0e3b\t\u010b"+
54112 		"\u0001\u010b\u0003\u010b\u0e3e\b\u010b\u0001\u010c\u0001\u010c\u0003\u010c"+
54113 		"\u0e42\b\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0003\u010c\u0e47\b"+
54114 		"\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0003\u010c\u0e4c\b\u010c\u0001"+
54115 		"\u010d\u0001\u010d\u0003\u010d\u0e50\b\u010d\u0001\u010d\u0001\u010d\u0001"+
54116 		"\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0005\u010e\u0e59"+
54117 		"\b\u010e\n\u010e\f\u010e\u0e5c\t\u010e\u0001\u010e\u0001\u010e\u0001\u010f"+
54118 		"\u0001\u010f\u0003\u010f\u0e62\b\u010f\u0001\u0110\u0001\u0110\u0001\u0110"+
54119 		"\u0001\u0110\u0003\u0110\u0e68\b\u0110\u0001\u0110\u0001\u0110\u0003\u0110"+
54120 		"\u0e6c\b\u0110\u0001\u0110\u0001\u0110\u0003\u0110\u0e70\b\u0110\u0001"+
54121 		"\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0003"+
54122 		"\u0110\u0e78\b\u0110\u0003\u0110\u0e7a\b\u0110\u0001\u0110\u0003\u0110"+
54123 		"\u0e7d\b\u0110\u0001\u0110\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0111"+
54124 		"\u0003\u0111\u0e84\b\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0003\u0111"+
54125 		"\u0e89\b\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111"+
54126 		"\u0001\u0111\u0001\u0111\u0003\u0111\u0e92\b\u0111\u0001\u0112\u0001\u0112"+
54127 		"\u0001\u0112\u0003\u0112\u0e97\b\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+
54128 		"\u0001\u0112\u0005\u0112\u0e9d\b\u0112\n\u0112\f\u0112\u0ea0\t\u0112\u0001"+
54129 		"\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0003\u0112\u0ea6\b\u0112\u0001"+
54130 		"\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0003"+
54131 		"\u0114\u0eae\b\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+
54132 		"\u0114\u0001\u0114\u0001\u0114\u0003\u0114\u0eb7\b\u0114\u0001\u0114\u0001"+
54133 		"\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+
54134 		"\u0114\u0001\u0114\u0001\u0114\u0003\u0114\u0ec3\b\u0114\u0001\u0115\u0001"+
54135 		"\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+
54136 		"\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0005\u0115\u0ed1"+
54137 		"\b\u0115\n\u0115\f\u0115\u0ed4\t\u0115\u0003\u0115\u0ed6\b\u0115\u0003"+
54138 		"\u0115\u0ed8\b\u0115\u0001\u0116\u0003\u0116\u0edb\b\u0116\u0001\u0116"+
54139 		"\u0003\u0116\u0ede\b\u0116\u0001\u0116\u0003\u0116\u0ee1\b\u0116\u0001"+
54140 		"\u0116\u0003\u0116\u0ee4\b\u0116\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+
54141 		"\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+
54142 		"\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+
54143 		"\u0117\u0003\u0117\u0ef6\b\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0003"+
54144 		"\u0118\u0efb\b\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0003\u0118\u0f00"+
54145 		"\b\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0003\u0118\u0f05\b\u0118"+
54146 		"\u0001\u0118\u0003\u0118\u0f08\b\u0118\u0005\u0118\u0f0a\b\u0118\n\u0118"+
54147 		"\f\u0118\u0f0d\t\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119"+
54148 		"\u0001\u0119\u0003\u0119\u0f14\b\u0119\u0001\u011a\u0001\u011a\u0001\u011a"+
54149 		"\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0005\u011a"+
54150 		"\u0f1e\b\u011a\n\u011a\f\u011a\u0f21\t\u011a\u0003\u011a\u0f23\b\u011a"+
54151 		"\u0001\u011a\u0003\u011a\u0f26\b\u011a\u0001\u011a\u0001\u011a\u0001\u011a"+
54152 		"\u0001\u011a\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b"+
54153 		"\u0001\u011b\u0001\u011b\u0005\u011b\u0f33\b\u011b\n\u011b\f\u011b\u0f36"+
54154 		"\t\u011b\u0003\u011b\u0f38\b\u011b\u0001\u011b\u0003\u011b\u0f3b\b\u011b"+
54155 		"\u0001\u011b\u0001\u011b\u0003\u011b\u0f3f\b\u011b\u0001\u011b\u0001\u011b"+
54156 		"\u0003\u011b\u0f43\b\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+
54157 		"\u0001\u011c\u0001\u011c\u0005\u011c\u0f4b\b\u011c\n\u011c\f\u011c\u0f4e"+
54158 		"\t\u011c\u0003\u011c\u0f50\b\u011c\u0001\u011c\u0003\u011c\u0f53\b\u011c"+
54159 		"\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011d"+
54160 		"\u0001\u011d\u0001\u011d\u0001\u011d\u0003\u011d\u0f5e\b\u011d\u0001\u011d"+
54161 		"\u0005\u011d\u0f61\b\u011d\n\u011d\f\u011d\u0f64\t\u011d\u0001\u011e\u0005"+
54162 		"\u011e\u0f67\b\u011e\n\u011e\f\u011e\u0f6a\t\u011e\u0001\u011f\u0003\u011f"+
54163 		"\u0f6d\b\u011f\u0001\u011f\u0003\u011f\u0f70\b\u011f\u0001\u011f\u0001"+
54164 		"\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001"+
54165 		"\u011f\u0001\u011f\u0003\u011f\u0f7b\b\u011f\u0001\u011f\u0003\u011f\u0f7e"+
54166 		"\b\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0003\u011f\u0f83\b\u011f"+
54167 		"\u0003\u011f\u0f85\b\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+
54168 		"\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+
54169 		"\u0003\u0120\u0f91\b\u0120\u0001\u0120\u0003\u0120\u0f94\b\u0120\u0001"+
54170 		"\u0121\u0001\u0121\u0001\u0121\u0005\u0121\u0f99\b\u0121\n\u0121\f\u0121"+
54171 		"\u0f9c\t\u0121\u0003\u0121\u0f9e\b\u0121\u0001\u0122\u0001\u0122\u0003"+
54172 		"\u0122\u0fa2\b\u0122\u0001\u0122\u0001\u0122\u0003\u0122\u0fa6\b\u0122"+
54173 		"\u0001\u0122\u0003\u0122\u0fa9\b\u0122\u0001\u0123\u0003\u0123\u0fac\b"+
54174 		"\u0123\u0001\u0123\u0001\u0123\u0003\u0123\u0fb0\b\u0123\u0001\u0123\u0001"+
54175 		"\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0005"+
54176 		"\u0124\u0fb9\b\u0124\n\u0124\f\u0124\u0fbc\t\u0124\u0003\u0124\u0fbe\b"+
54177 		"\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0003"+
54178 		"\u0125\u0fc5\b\u0125\u0001\u0126\u0003\u0126\u0fc8\b\u0126\u0001\u0126"+
54179 		"\u0001\u0126\u0003\u0126\u0fcc\b\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+
54180 		"\u0001\u0126\u0001\u0126\u0003\u0126\u0fd3\b\u0126\u0001\u0126\u0001\u0126"+
54181 		"\u0001\u0126\u0003\u0126\u0fd8\b\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+
54182 		"\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0005\u0126\u0fe1\b\u0126"+
54183 		"\n\u0126\f\u0126\u0fe4\t\u0126\u0001\u0126\u0001\u0126\u0003\u0126\u0fe8"+
54184 		"\b\u0126\u0003\u0126\u0fea\b\u0126\u0001\u0127\u0001\u0127\u0001\u0127"+
54185 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
54186 		"\u0001\u0127\u0001\u0127\u0003\u0127\u0ff7\b\u0127\u0001\u0127\u0001\u0127"+
54187 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
54188 		"\u0001\u0127\u0003\u0127\u1002\b\u0127\u0001\u0128\u0001\u0128\u0001\u0128"+
54189 		"\u0001\u0128\u0005\u0128\u1008\b\u0128\n\u0128\f\u0128\u100b\t\u0128\u0003"+
54190 		"\u0128\u100d\b\u0128\u0001\u0128\u0001\u0128\u0003\u0128\u1011\b\u0128"+
54191 		"\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0003\u0128\u1017\b\u0128"+
54192 		"\u0001\u0129\u0001\u0129\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+
54193 		"\u0005\u012a\u101f\b\u012a\n\u012a\f\u012a\u1022\t\u012a\u0001\u012b\u0001"+
54194 		"\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0005\u012b\u1029\b\u012b\n"+
54195 		"\u012b\f\u012b\u102c\t\u012b\u0001\u012b\u0001\u012b\u0003\u012b\u1030"+
54196 		"\b\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+
54197 		"\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u103c"+
54198 		"\b\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u1042"+
54199 		"\b\u012c\u0001\u012c\u0003\u012c\u1045\b\u012c\u0001\u012c\u0003\u012c"+
54200 		"\u1048\b\u012c\u0001\u012c\u0003\u012c\u104b\b\u012c\u0001\u012c\u0003"+
54201 		"\u012c\u104e\b\u012c\u0001\u012c\u0003\u012c\u1051\b\u012c\u0001\u012c"+
54202 		"\u0003\u012c\u1054\b\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u1058\b"+
54203 		"\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u105d\b\u012c\u0001"+
54204 		"\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u1064"+
54205 		"\b\u012c\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0003"+
54206 		"\u012d\u106b\b\u012d\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001"+
54207 		"\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001"+
54208 		"\u012f\u0003\u012f\u1078\b\u012f\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
54209 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
54210 		"\u0130\u0003\u0130\u1084\b\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
54211 		"\u0130\u0003\u0130\u108a\b\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
54212 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0003\u0130\u1093\b\u0130\u0001"+
54213 		"\u0130\u0003\u0130\u1096\b\u0130\u0001\u0131\u0001\u0131\u0003\u0131\u109a"+
54214 		"\b\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u109e\b\u0131\u0001\u0131"+
54215 		"\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0005\u0131\u10a5\b\u0131"+
54216 		"\n\u0131\f\u0131\u10a8\t\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u10ac"+
54217 		"\b\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
54218 		"\u0131\u0001\u0131\u0003\u0131\u10b5\b\u0131\u0003\u0131\u10b7\b\u0131"+
54219 		"\u0001\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u10bc\b\u0131\u0003\u0131"+
54220 		"\u10be\b\u0131\u0001\u0132\u0001\u0132\u0001\u0132\u0005\u0132\u10c3\b"+
54221 		"\u0132\n\u0132\f\u0132\u10c6\t\u0132\u0001\u0133\u0001\u0133\u0001\u0133"+
54222 		"\u0001\u0133\u0001\u0133\u0001\u0133\u0005\u0133\u10ce\b\u0133\n\u0133"+
54223 		"\f\u0133\u10d1\t\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133"+
54224 		"\u0001\u0133\u0001\u0133\u0003\u0133\u10d9\b\u0133\u0001\u0134\u0001\u0134"+
54225 		"\u0001\u0134\u0001\u0134\u0001\u0134\u0003\u0134\u10e0\b\u0134\u0003\u0134"+
54226 		"\u10e2\b\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+
54227 		"\u0005\u0134\u10e9\b\u0134\n\u0134\f\u0134\u10ec\t\u0134\u0001\u0134\u0001"+
54228 		"\u0134\u0003\u0134\u10f0\b\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+
54229 		"\u0134\u0001\u0134\u0003\u0134\u10f7\b\u0134\u0001\u0134\u0001\u0134\u0001"+
54230 		"\u0134\u0001\u0134\u0001\u0134\u0003\u0134\u10fe\b\u0134\u0001\u0134\u0001"+
54231 		"\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+
54232 		"\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+
54233 		"\u0134\u0005\u0134\u110e\b\u0134\n\u0134\f\u0134\u1111\t\u0134\u0001\u0134"+
54234 		"\u0001\u0134\u0003\u0134\u1115\b\u0134\u0001\u0134\u0001\u0134\u0003\u0134"+
54235 		"\u1119\b\u0134\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54236 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54237 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54238 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54239 		"\u0001\u0135\u0001\u0135\u0003\u0135\u1134\b\u0135\u0001\u0135\u0003\u0135"+
54240 		"\u1137\b\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54241 		"\u0001\u0135\u0001\u0135\u0003\u0135\u1140\b\u0135\u0001\u0135\u0001\u0135"+
54242 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54243 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54244 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54245 		"\u0001\u0135\u0005\u0135\u1157\b\u0135\n\u0135\f\u0135\u115a\t\u0135\u0003"+
54246 		"\u0135\u115c\b\u0135\u0003\u0135\u115e\b\u0135\u0001\u0136\u0001\u0136"+
54247 		"\u0001\u0136\u0003\u0136\u1163\b\u0136\u0001\u0137\u0001\u0137\u0001\u0137"+
54248 		"\u0001\u0137\u0001\u0137\u0001\u0137\u0003\u0137\u116b\b\u0137\u0001\u0138"+
54249 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
54250 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
54251 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
54252 		"\u0003\u0138\u1180\b\u0138\u0003\u0138\u1182\b\u0138\u0001\u0139\u0001"+
54253 		"\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0003"+
54254 		"\u0139\u118b\b\u0139\u0001\u0139\u0003\u0139\u118e\b\u0139\u0001\u013a"+
54255 		"\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+
54256 		"\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0005\u013a\u119b\b\u013a"+
54257 		"\n\u013a\f\u013a\u119e\t\u013a\u0001\u013a\u0001\u013a\u0003\u013a\u11a2"+
54258 		"\b\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0005"+
54259 		"\u013a\u11a9\b\u013a\n\u013a\f\u013a\u11ac\t\u013a\u0001\u013a\u0001\u013a"+
54260 		"\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+
54261 		"\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+
54262 		"\u0001\u013a\u0005\u013a\u11bd\b\u013a\n\u013a\f\u013a\u11c0\t\u013a\u0003"+
54263 		"\u013a\u11c2\b\u013a\u0001\u013a\u0001\u013a\u0003\u013a\u11c6\b\u013a"+
54264 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
54265 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0003\u013b\u11d2\b\u013b"+
54266 		"\u0003\u013b\u11d4\b\u013b\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c"+
54267 		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c"+
54268 		"\u0001\u013c\u0003\u013c\u11e1\b\u013c\u0003\u013c\u11e3\b\u013c\u0001"+
54269 		"\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001"+
54270 		"\u013d\u0001\u013d\u0003\u013d\u11ed\b\u013d\u0001\u013e\u0001\u013e\u0001"+
54271 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54272 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54273 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54274 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54275 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54276 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54277 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0003\u013e\u121a"+
54278 		"\b\u013e\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u1220"+
54279 		"\b\u013f\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+
54280 		"\u0140\u0001\u0140\u0003\u0140\u1229\b\u0140\u0001\u0140\u0001\u0140\u0001"+
54281 		"\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+
54282 		"\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0003\u0140\u1238"+
54283 		"\b\u0140\u0001\u0141\u0001\u0141\u0003\u0141\u123c\b\u0141\u0001\u0142"+
54284 		"\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0005\u0142\u1243\b\u0142"+
54285 		"\n\u0142\f\u0142\u1246\t\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0003"+
54286 		"\u0142\u124b\b\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+
54287 		"\u0142\u0001\u0142\u0005\u0142\u1253\b\u0142\n\u0142\f\u0142\u1256\t\u0142"+
54288 		"\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142"+
54289 		"\u0003\u0142\u125e\b\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
54290 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0003\u0143"+
54291 		"\u1269\b\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+
54292 		"\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0003\u0144"+
54293 		"\u1275\b\u0144\u0003\u0144\u1277\b\u0144\u0001\u0144\u0001\u0144\u0001"+
54294 		"\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0003\u0144\u127f\b\u0144\u0001"+
54295 		"\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+
54296 		"\u0145\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0003"+
54297 		"\u0146\u128d\b\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0005"+
54298 		"\u0146\u1293\b\u0146\n\u0146\f\u0146\u1296\t\u0146\u0001\u0146\u0001\u0146"+
54299 		"\u0003\u0146\u129a\b\u0146\u0003\u0146\u129c\b\u0146\u0001\u0147\u0001"+
54300 		"\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0003"+
54301 		"\u0147\u12a5\b\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0003"+
54302 		"\u0148\u12ab\b\u0148\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
54303 		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
54304 		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
54305 		"\u0149\u0001\u0149\u0001\u0149\u0003\u0149\u12c0\b\u0149\u0001\u014a\u0001"+
54306 		"\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0003\u014a\u12c7\b\u014a\u0001"+
54307 		"\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0005\u014a\u12cd\b\u014a\n"+
54308 		"\u014a\f\u014a\u12d0\t\u014a\u0001\u014a\u0001\u014a\u0003\u014a\u12d4"+
54309 		"\b\u014a\u0003\u014a\u12d6\b\u014a\u0001\u014b\u0001\u014b\u0001\u014b"+
54310 		"\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+
54311 		"\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+
54312 		"\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+
54313 		"\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+
54314 		"\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b"+
54315 		"\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0005\u014b\u12fd\b\u014b"+
54316 		"\n\u014b\f\u014b\u1300\t\u014b\u0001\u014b\u0001\u014b\u0003\u014b\u1304"+
54317 		"\b\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
54318 		"\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
54319 		"\u014c\u0001\u014c\u0003\u014c\u1313\b\u014c\u0001\u014d\u0001\u014d\u0001"+
54320 		"\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0003\u014d\u131b\b\u014d\u0001"+
54321 		"\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+
54322 		"\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+
54323 		"\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+
54324 		"\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u1332\b\u014e\u0001\u014f\u0001"+
54325 		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003"+
54326 		"\u014f\u133b\b\u014f\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001"+
54327 		"\u0150\u0001\u0150\u0003\u0150\u1343\b\u0150\u0001\u0151\u0001\u0151\u0001"+
54328 		"\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001\u0152\u0001"+
54329 		"\u0152\u0003\u0152\u134e\b\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0003"+
54330 		"\u0152\u1353\b\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0005"+
54331 		"\u0153\u1359\b\u0153\n\u0153\f\u0153\u135c\t\u0153\u0001\u0153\u0001\u0153"+
54332 		"\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0005\u0154\u1364\b\u0154"+
54333 		"\n\u0154\f\u0154\u1367\t\u0154\u0001\u0154\u0001\u0154\u0001\u0155\u0001"+
54334 		"\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0003\u0155\u1371"+
54335 		"\b\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+
54336 		"\u0156\u0001\u0156\u0003\u0156\u137a\b\u0156\u0001\u0157\u0001\u0157\u0001"+
54337 		"\u0157\u0001\u0157\u0001\u0157\u0003\u0157\u1381\b\u0157\u0001\u0158\u0001"+
54338 		"\u0158\u0003\u0158\u1385\b\u0158\u0001\u0159\u0001\u0159\u0001\u0159\u0001"+
54339 		"\u0159\u0003\u0159\u138b\b\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001"+
54340 		"\u0159\u0001\u0159\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+
54341 		"\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+
54342 		"\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0003\u015a\u13a0\b\u015a\u0001"+
54343 		"\u015a\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+
54344 		"\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0005\u015b\u13ac\b\u015b\n"+
54345 		"\u015b\f\u015b\u13af\t\u015b\u0003\u015b\u13b1\b\u015b\u0001\u015b\u0001"+
54346 		"\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0005"+
54347 		"\u015c\u13ba\b\u015c\n\u015c\f\u015c\u13bd\t\u015c\u0001\u015c\u0001\u015c"+
54348 		"\u0003\u015c\u13c1\b\u015c\u0001\u015d\u0003\u015d\u13c4\b\u015d\u0001"+
54349 		"\u015d\u0001\u015d\u0003\u015d\u13c8\b\u015d\u0001\u015d\u0003\u015d\u13cb"+
54350 		"\b\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u13cf\b\u015d\u0001\u015d"+
54351 		"\u0003\u015d\u13d2\b\u015d\u0001\u015d\u0003\u015d\u13d5\b\u015d\u0001"+
54352 		"\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u13db\b\u015d\u0001"+
54353 		"\u015e\u0003\u015e\u13de\b\u015e\u0001\u015e\u0003\u015e\u13e1\b\u015e"+
54354 		"\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015f\u0003\u015f\u13e7\b\u015f"+
54355 		"\u0001\u015f\u0003\u015f\u13ea\b\u015f\u0001\u015f\u0001\u015f\u0001\u015f"+
54356 		"\u0001\u015f\u0005\u015f\u13f0\b\u015f\n\u015f\f\u015f\u13f3\t\u015f\u0001"+
54357 		"\u0160\u0003\u0160\u13f6\b\u0160\u0001\u0160\u0003\u0160\u13f9\b\u0160"+
54358 		"\u0001\u0160\u0001\u0160\u0001\u0161\u0003\u0161\u13fe\b\u0161\u0001\u0161"+
54359 		"\u0001\u0161\u0001\u0162\u0001\u0162\u0001\u0162\u0004\u0162\u1405\b\u0162"+
54360 		"\u000b\u0162\f\u0162\u1406\u0001\u0162\u0001\u0162\u0001\u0163\u0001\u0163"+
54361 		"\u0001\u0163\u0001\u0163\u0001\u0163\u0005\u0163\u1410\b\u0163\n\u0163"+
54362 		"\f\u0163\u1413\t\u0163\u0003\u0163\u1415\b\u0163\u0001\u0164\u0003\u0164"+
54363 		"\u1418\b\u0164\u0001\u0164\u0001\u0164\u0003\u0164\u141c\b\u0164\u0001"+
54364 		"\u0164\u0001\u0164\u0003\u0164\u1420\b\u0164\u0001\u0164\u0001\u0164\u0003"+
54365 		"\u0164\u1424\b\u0164\u0001\u0164\u0003\u0164\u1427\b\u0164\u0001\u0165"+
54366 		"\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0166\u0001\u0166\u0001\u0166"+
54367 		"\u0001\u0166\u0005\u0166\u1431\b\u0166\n\u0166\f\u0166\u1434\t\u0166\u0001"+
54368 		"\u0166\u0003\u0166\u1437\b\u0166\u0001\u0167\u0001\u0167\u0001\u0167\u0001"+
54369 		"\u0167\u0005\u0167\u143d\b\u0167\n\u0167\f\u0167\u1440\t\u0167\u0001\u0167"+
54370 		"\u0001\u0167\u0001\u0167\u0001\u0167\u0003\u0167\u1446\b\u0167\u0001\u0168"+
54371 		"\u0001\u0168\u0003\u0168\u144a\b\u0168\u0001\u0169\u0003\u0169\u144d\b"+
54372 		"\u0169\u0001\u0169\u0001\u0169\u0003\u0169\u1451\b\u0169\u0001\u0169\u0001"+
54373 		"\u0169\u0003\u0169\u1455\b\u0169\u0001\u0169\u0003\u0169\u1458\b\u0169"+
54374 		"\u0001\u0169\u0003\u0169\u145b\b\u0169\u0001\u0169\u0003\u0169\u145e\b"+
54375 		"\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0003\u016b\u1464"+
54376 		"\b\u016b\u0001\u016b\u0003\u016b\u1467\b\u016b\u0001\u016b\u0001\u016b"+
54377 		"\u0003\u016b\u146b\b\u016b\u0001\u016b\u0003\u016b\u146e\b\u016b\u0001"+
54378 		"\u016b\u0003\u016b\u1471\b\u016b\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+
54379 		"\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0003"+
54380 		"\u016c\u147c\b\u016c\u0001\u016d\u0001\u016d\u0003\u016d\u1480\b\u016d"+
54381 		"\u0001\u016d\u0001\u016d\u0001\u016d\u0003\u016d\u1485\b\u016d\u0005\u016d"+
54382 		"\u1487\b\u016d\n\u016d\f\u016d\u148a\t\u016d\u0001\u016e\u0001\u016e\u0001"+
54383 		"\u016f\u0001\u016f\u0001\u016f\u0003\u016f\u1491\b\u016f\u0001\u016f\u0001"+
54384 		"\u016f\u0003\u016f\u1495\b\u016f\u0001\u016f\u0005\u016f\u1498\b\u016f"+
54385 		"\n\u016f\f\u016f\u149b\t\u016f\u0001\u0170\u0003\u0170\u149e\b\u0170\u0001"+
54386 		"\u0170\u0001\u0170\u0003\u0170\u14a2\b\u0170\u0001\u0170\u0001\u0170\u0003"+
54387 		"\u0170\u14a6\b\u0170\u0001\u0170\u0003\u0170\u14a9\b\u0170\u0001\u0170"+
54388 		"\u0003\u0170\u14ac\b\u0170\u0001\u0170\u0003\u0170\u14af\b\u0170\u0001"+
54389 		"\u0170\u0003\u0170\u14b2\b\u0170\u0001\u0170\u0003\u0170\u14b5\b\u0170"+
54390 		"\u0001\u0170\u0003\u0170\u14b8\b\u0170\u0001\u0171\u0001\u0171\u0001\u0172"+
54391 		"\u0001\u0172\u0001\u0172\u0003\u0172\u14bf\b\u0172\u0003\u0172\u14c1\b"+
54392 		"\u0172\u0001\u0172\u0001\u0172\u0005\u0172\u14c5\b\u0172\n\u0172\f\u0172"+
54393 		"\u14c8\t\u0172\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+
54394 		"\u0003\u0173\u14cf\b\u0173\u0001\u0173\u0001\u0173\u0003\u0173\u14d3\b"+
54395 		"\u0173\u0001\u0173\u0001\u0173\u0003\u0173\u14d7\b\u0173\u0001\u0173\u0003"+
54396 		"\u0173\u14da\b\u0173\u0001\u0173\u0003\u0173\u14dd\b\u0173\u0003\u0173"+
54397 		"\u14df\b\u0173\u0001\u0174\u0001\u0174\u0003\u0174\u14e3\b\u0174\u0001"+
54398 		"\u0174\u0001\u0174\u0003\u0174\u14e7\b\u0174\u0001\u0174\u0003\u0174\u14ea"+
54399 		"\b\u0174\u0001\u0174\u0001\u0174\u0003\u0174\u14ee\b\u0174\u0001\u0174"+
54400 		"\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+
54401 		"\u0001\u0174\u0003\u0174\u14f8\b\u0174\u0001\u0174\u0003\u0174\u14fb\b"+
54402 		"\u0174\u0003\u0174\u14fd\b\u0174\u0001\u0175\u0001\u0175\u0003\u0175\u1501"+
54403 		"\b\u0175\u0001\u0176\u0001\u0176\u0001\u0177\u0001\u0177\u0001\u0177\u0001"+
54404 		"\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001"+
54405 		"\u017a\u0001\u017a\u0001\u017a\u0005\u017a\u1511\b\u017a\n\u017a\f\u017a"+
54406 		"\u1514\t\u017a\u0001\u017b\u0001\u017b\u0005\u017b\u1518\b\u017b\n\u017b"+
54407 		"\f\u017b\u151b\t\u017b\u0001\u017c\u0001\u017c\u0003\u017c\u151f\b\u017c"+
54408 		"\u0001\u017c\u0003\u017c\u1522\b\u017c\u0001\u017c\u0001\u017c\u0003\u017c"+
54409 		"\u1526\b\u017c\u0001\u017c\u0001\u017c\u0003\u017c\u152a\b\u017c\u0001"+
54410 		"\u017c\u0001\u017c\u0003\u017c\u152e\b\u017c\u0001\u017c\u0003\u017c\u1531"+
54411 		"\b\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0001\u017c\u0003\u017c\u1537"+
54412 		"\b\u017c\u0001\u017d\u0003\u017d\u153a\b\u017d\u0001\u017d\u0003\u017d"+
54413 		"\u153d\b\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003\u017d"+
54414 		"\u1543\b\u017d\u0001\u017d\u0003\u017d\u1546\b\u017d\u0001\u017d\u0001"+
54415 		"\u017d\u0003\u017d\u154a\b\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003"+
54416 		"\u017d\u154f\b\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003"+
54417 		"\u017d\u1555\b\u017d\u0003\u017d\u1557\b\u017d\u0001\u017e\u0001\u017e"+
54418 		"\u0001\u017e\u0001\u017e\u0003\u017e\u155d\b\u017e\u0001\u017f\u0001\u017f"+
54419 		"\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180"+
54420 		"\u0005\u0180\u1567\b\u0180\n\u0180\f\u0180\u156a\t\u0180\u0001\u0181\u0001"+
54421 		"\u0181\u0001\u0181\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001"+
54422 		"\u0183\u0001\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0005"+
54423 		"\u0184\u1579\b\u0184\n\u0184\f\u0184\u157c\t\u0184\u0001\u0185\u0001\u0185"+
54424 		"\u0003\u0185\u1580\b\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0186"+
54425 		"\u0001\u0186\u0001\u0186\u0003\u0186\u1588\b\u0186\u0001\u0186\u0001\u0186"+
54426 		"\u0001\u0186\u0003\u0186\u158d\b\u0186\u0003\u0186\u158f\b\u0186\u0001"+
54427 		"\u0187\u0001\u0187\u0001\u0187\u0005\u0187\u1594\b\u0187\n\u0187\f\u0187"+
54428 		"\u1597\t\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0003\u0188"+
54429 		"\u159d\b\u0188\u0001\u0188\u0003\u0188\u15a0\b\u0188\u0001\u0189\u0001"+
54430 		"\u0189\u0001\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0003\u018a\u15a8"+
54431 		"\b\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+
54432 		"\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+
54433 		"\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+
54434 		"\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+
54435 		"\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+
54436 		"\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+
54437 		"\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0005\u018b\u15d2"+
54438 		"\b\u018b\n\u018b\f\u018b\u15d5\t\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+
54439 		"\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+
54440 		"\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b"+
54441 		"\u0001\u018b\u0001\u018b\u0005\u018b\u15e8\b\u018b\n\u018b\f\u018b\u15eb"+
54442 		"\t\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0003\u018b\u15f1"+
54443 		"\b\u018b\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54444 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54445 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54446 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54447 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54448 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54449 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54450 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54451 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+
54452 		"\u018c\u0003\u018c\u1629\b\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0001"+
54453 		"\u018d\u0003\u018d\u162f\b\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+
54454 		"\u018e\u0001\u018e\u0001\u018e\u0003\u018e\u1637\b\u018e\u0001\u018e\u0003"+
54455 		"\u018e\u163a\b\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+
54456 		"\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0003\u018e\u1644\b\u018e\u0003"+
54457 		"\u018e\u1646\b\u018e\u0003\u018e\u1648\b\u018e\u0001\u018e\u0001\u018e"+
54458 		"\u0001\u018e\u0003\u018e\u164d\b\u018e\u0003\u018e\u164f\b\u018e\u0003"+
54459 		"\u018e\u1651\b\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0003"+
54460 		"\u018e\u1657\b\u018e\u0003\u018e\u1659\b\u018e\u0001\u018e\u0001\u018e"+
54461 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0003\u018e\u1660\b\u018e\u0001\u018e"+
54462 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0003\u018e\u1666\b\u018e\u0003\u018e"+
54463 		"\u1668\b\u018e\u0003\u018e\u166a\b\u018e\u0003\u018e\u166c\b\u018e\u0001"+
54464 		"\u018f\u0001\u018f\u0001\u018f\u0003\u018f\u1671\b\u018f\u0001\u018f\u0001"+
54465 		"\u018f\u0003\u018f\u1675\b\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+
54466 		"\u018f\u0001\u018f\u0001\u018f\u0003\u018f\u167d\b\u018f\u0003\u018f\u167f"+
54467 		"\b\u018f\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001"+
54468 		"\u0190\u0001\u0190\u0001\u0190\u0003\u0190\u1689\b\u0190\u0003\u0190\u168b"+
54469 		"\b\u0190\u0001\u0190\u0001\u0190\u0003\u0190\u168f\b\u0190\u0001\u0190"+
54470 		"\u0001\u0190\u0003\u0190\u1693\b\u0190\u0003\u0190\u1695\b\u0190\u0001"+
54471 		"\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u169a\b\u0191\u0003\u0191\u169c"+
54472 		"\b\u0191\u0001\u0191\u0003\u0191\u169f\b\u0191\u0001\u0192\u0001\u0192"+
54473 		"\u0001\u0192\u0001\u0192\u0001\u0192\u0005\u0192\u16a6\b\u0192\n\u0192"+
54474 		"\f\u0192\u16a9\t\u0192\u0001\u0192\u0001\u0192\u0001\u0193\u0001\u0193"+
54475 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u16b2\b\u0193\u0001\u0194"+
54476 		"\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0196\u0001\u0196\u0001\u0196"+
54477 		"\u0001\u0197\u0001\u0197\u0001\u0197\u0003\u0197\u16be\b\u0197\u0001\u0198"+
54478 		"\u0001\u0198\u0001\u0198\u0003\u0198\u16c3\b\u0198\u0001\u0198\u0001\u0198"+
54479 		"\u0001\u0198\u0001\u0198\u0005\u0198\u16c9\b\u0198\n\u0198\f\u0198\u16cc"+
54480 		"\t\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0003\u0198\u16d1\b\u0198"+
54481 		"\u0001\u0198\u0001\u0198\u0003\u0198\u16d5\b\u0198\u0001\u0199\u0001\u0199"+
54482 		"\u0001\u0199\u0003\u0199\u16da\b\u0199\u0001\u0199\u0001\u0199\u0001\u0199"+
54483 		"\u0001\u0199\u0005\u0199\u16e0\b\u0199\n\u0199\f\u0199\u16e3\t\u0199\u0001"+
54484 		"\u0199\u0001\u0199\u0001\u0199\u0003\u0199\u16e8\b\u0199\u0001\u019a\u0001"+
54485 		"\u019a\u0003\u019a\u16ec\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0003"+
54486 		"\u019a\u16f1\b\u019a\u0005\u019a\u16f3\b\u019a\n\u019a\f\u019a\u16f6\t"+
54487 		"\u019a\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0003\u019b\u16fc"+
54488 		"\b\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001\u019c\u0001\u019c\u0005"+
54489 		"\u019c\u1703\b\u019c\n\u019c\f\u019c\u1706\t\u019c\u0001\u019d\u0001\u019d"+
54490 		"\u0001\u019d\u0001\u019d\u0003\u019d\u170c\b\u019d\u0001\u019d\u0001\u019d"+
54491 		"\u0001\u019e\u0001\u019e\u0001\u019e\u0003\u019e\u1713\b\u019e\u0001\u019e"+
54492 		"\u0001\u019e\u0001\u019f\u0001\u019f\u0001\u01a0\u0001\u01a0\u0003\u01a0"+
54493 		"\u171b\b\u01a0\u0001\u01a0\u0001\u01a0\u0003\u01a0\u171f\b\u01a0\u0001"+
54494 		"\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1\u1724\b\u01a1\u0001\u01a1\u0001"+
54495 		"\u01a1\u0001\u01a1\u0001\u01a1\u0005\u01a1\u172a\b\u01a1\n\u01a1\f\u01a1"+
54496 		"\u172d\t\u01a1\u0001\u01a1\u0003\u01a1\u1730\b\u01a1\u0001\u01a1\u0001"+
54497 		"\u01a1\u0003\u01a1\u1734\b\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0003"+
54498 		"\u01a2\u1739\b\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0005"+
54499 		"\u01a2\u173f\b\u01a2\n\u01a2\f\u01a2\u1742\t\u01a2\u0001\u01a2\u0003\u01a2"+
54500 		"\u1745\b\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0003\u01a3\u174a\b"+
54501 		"\u01a3\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0003\u01a4\u174f\b\u01a4\u0001"+
54502 		"\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0005\u01a4\u1755\b\u01a4\n"+
54503 		"\u01a4\f\u01a4\u1758\t\u01a4\u0001\u01a4\u0003\u01a4\u175b\b\u01a4\u0001"+
54504 		"\u01a4\u0001\u01a4\u0003\u01a4\u175f\b\u01a4\u0001\u01a5\u0001\u01a5\u0001"+
54505 		"\u01a5\u0003\u01a5\u1764\b\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+
54506 		"\u01a5\u0005\u01a5\u176a\b\u01a5\n\u01a5\f\u01a5\u176d\t\u01a5\u0001\u01a5"+
54507 		"\u0003\u01a5\u1770\b\u01a5\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6"+
54508 		"\u0001\u01a7\u0001\u01a7\u0003\u01a7\u1778\b\u01a7\u0001\u01a7\u0001\u01a7"+
54509 		"\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+
54510 		"\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+
54511 		"\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0003\u01a7"+
54512 		"\u178d\b\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8"+
54513 		"\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8"+
54514 		"\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003\u01a8"+
54515 		"\u179f\b\u01a8\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54516 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0003\u01a9\u17aa\b\u01a9"+
54517 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54518 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54519 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54520 		"\u0001\u01a9\u0003\u01a9\u17bf\b\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54521 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54522 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54523 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54524 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0003\u01a9\u17d9\b\u01a9\u0001\u01a9"+
54525 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54526 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54527 		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9"+
54528 		"\u0003\u01a9\u17ee\b\u01a9\u0001\u01aa\u0001\u01aa\u0003\u01aa\u17f2\b"+
54529 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u17f7\b\u01aa\u0001"+
54530 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
54531 		"\u01aa\u0003\u01aa\u1800\b\u01aa\u0003\u01aa\u1802\b\u01aa\u0001\u01ab"+
54532 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54533 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54534 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u1814\b\u01ab\u0001\u01ab"+
54535 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54536 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54537 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab"+
54538 		"\u1828\b\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54539 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u1833\b\u01ab"+
54540 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54541 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54542 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab"+
54543 		"\u1846\b\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u184a\b\u01ab\u0001"+
54544 		"\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003"+
54545 		"\u01ab\u1852\b\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u1856\b\u01ab"+
54546 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54547 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u1861\b\u01ab\u0001\u01ab"+
54548 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54549 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54550 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54551 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54552 		"\u0001\u01ab\u0003\u01ab\u187d\b\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54553 		"\u0001\u01ab\u0003\u01ab\u1883\b\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54554 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54555 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54556 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54557 		"\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54558 		"\u0003\u01ab\u18a0\b\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab"+
54559 		"\u0001\u01ab\u0003\u01ab\u18a7\b\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab"+
54560 		"\u18ab\b\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0003\u01ac\u18b0\b"+
54561 		"\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+
54562 		"\u01ad\u0001\u01ad\u0001\u01ad\u0003\u01ad\u18ba\b\u01ad\u0001\u01ae\u0001"+
54563 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54564 		"\u01ae\u0001\u01ae\u0003\u01ae\u18c5\b\u01ae\u0001\u01af\u0001\u01af\u0001"+
54565 		"\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0003"+
54566 		"\u01af\u18cf\b\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+
54567 		"\u01b0\u0001\u01b0\u0001\u01b0\u0003\u01b0\u18d8\b\u01b0\u0001\u01b1\u0001"+
54568 		"\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+
54569 		"\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+
54570 		"\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+
54571 		"\u01b1\u0003\u01b1\u18ee\b\u01b1\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+
54572 		"\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+
54573 		"\u01b2\u0001\u01b2\u0003\u01b2\u18fb\b\u01b2\u0001\u01b3\u0001\u01b3\u0001"+
54574 		"\u01b3\u0001\u01b3\u0001\u01b3\u0003\u01b3\u1902\b\u01b3\u0001\u01b4\u0001"+
54575 		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
54576 		"\u01b4\u0001\u01b4\u0001\u01b4\u0003\u01b4\u190e\b\u01b4\u0001\u01b5\u0001"+
54577 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
54578 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0003\u01b5\u191b\b\u01b5\u0001"+
54579 		"\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001"+
54580 		"\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0003\u01b6\u1928"+
54581 		"\b\u01b6\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+
54582 		"\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1933\b\u01b7\u0001"+
54583 		"\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001"+
54584 		"\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0003\u01b8\u193f\b\u01b8\u0001"+
54585 		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0003\u01b9\u1945\b\u01b9\u0001"+
54586 		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0003\u01b9\u194b\b\u01b9\u0001"+
54587 		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0003\u01b9\u1951\b\u01b9\u0001"+
54588 		"\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001"+
54589 		"\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0003\u01ba\u195d\b\u01ba\u0001"+
54590 		"\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001"+
54591 		"\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0003\u01bb\u196a"+
54592 		"\b\u01bb\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001"+
54593 		"\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0003"+
54594 		"\u01bc\u1977\b\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001"+
54595 		"\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0003"+
54596 		"\u01bd\u1983\b\u01bd\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0003"+
54597 		"\u01be\u1989\b\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0003"+
54598 		"\u01be\u198f\b\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+
54599 		"\u01be\u0003\u01be\u1996\b\u01be\u0001\u01bf\u0001\u01bf\u0003\u01bf\u199a"+
54600 		"\b\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+
54601 		"\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0003"+
54602 		"\u01c0\u19a7\b\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+
54603 		"\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+
54604 		"\u01c1\u0003\u01c1\u19b4\b\u01c1\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001"+
54605 		"\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0003\u01c2\u19bd\b\u01c2\u0001"+
54606 		"\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001"+
54607 		"\u01c3\u0001\u01c3\u0003\u01c3\u19c7\b\u01c3\u0001\u01c4\u0001\u01c4\u0001"+
54608 		"\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c6\u0001\u01c6\u0001"+
54609 		"\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54610 		"\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54611 		"\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54612 		"\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54613 		"\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54614 		"\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54615 		"\u01c6\u0001\u01c6\u0003\u01c6\u19f7\b\u01c6\u0001\u01c7\u0001\u01c7\u0001"+
54616 		"\u01c8\u0001\u01c8\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0003"+
54617 		"\u01c9\u1a01\b\u01c9\u0003\u01c9\u1a03\b\u01c9\u0001\u01ca\u0001\u01ca"+
54618 		"\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca"+
54619 		"\u0001\u01ca\u0001\u01ca\u0003\u01ca\u1a0f\b\u01ca\u0001\u01cb\u0001\u01cb"+
54620 		"\u0001\u01cb\u0001\u01cb\u0003\u01cb\u1a15\b\u01cb\u0001\u01cb\u0001\u01cb"+
54621 		"\u0001\u01cb\u0001\u01cb\u0005\u01cb\u1a1b\b\u01cb\n\u01cb\f\u01cb\u1a1e"+
54622 		"\t\u01cb\u0003\u01cb\u1a20\b\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
54623 		"\u0001\u01cc\u0001\u01cc\u0005\u01cc\u1a27\b\u01cc\n\u01cc\f\u01cc\u1a2a"+
54624 		"\t\u01cc\u0003\u01cc\u1a2c\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
54625 		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
54626 		"\u0005\u01cc\u1a37\b\u01cc\n\u01cc\f\u01cc\u1a3a\t\u01cc\u0003\u01cc\u1a3c"+
54627 		"\b\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003"+
54628 		"\u01cc\u1a43\b\u01cc\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0003"+
54629 		"\u01cd\u1a49\b\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001"+
54630 		"\u01cd\u0003\u01cd\u1a50\b\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001"+
54631 		"\u01cd\u0005\u01cd\u1a56\b\u01cd\n\u01cd\f\u01cd\u1a59\t\u01cd\u0003\u01cd"+
54632 		"\u1a5b\b\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+
54633 		"\u0001\u01ce\u0001\u01ce\u0005\u01ce\u1a64\b\u01ce\n\u01ce\f\u01ce\u1a67"+
54634 		"\t\u01ce\u0003\u01ce\u1a69\b\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce"+
54635 		"\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0003\u01ce\u1a72\b\u01ce"+
54636 		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf"+
54637 		"\u0001\u01cf\u0003\u01cf\u1a7b\b\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf"+
54638 		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0003\u01cf\u1a83\b\u01cf\u0003\u01cf"+
54639 		"\u1a85\b\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0"+
54640 		"\u0001\u01d0\u0001\u01d0\u0003\u01d0\u1a8e\b\u01d0\u0001\u01d0\u0001\u01d0"+
54641 		"\u0001\u01d0\u0003\u01d0\u1a93\b\u01d0\u0003\u01d0\u1a95\b\u01d0\u0001"+
54642 		"\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0003\u01d1\u1a9b\b\u01d1\u0001"+
54643 		"\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001"+
54644 		"\u01d1\u0005\u01d1\u1aa4\b\u01d1\n\u01d1\f\u01d1\u1aa7\t\u01d1\u0003\u01d1"+
54645 		"\u1aa9\b\u01d1\u0003\u01d1\u1aab\b\u01d1\u0001\u01d2\u0001\u01d2\u0001"+
54646 		"\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0003\u01d2\u1ab3\b\u01d2\u0001"+
54647 		"\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0003\u01d2\u1ab9\b\u01d2\u0001"+
54648 		"\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+
54649 		"\u01d3\u0001\u01d3\u0003\u01d3\u1ac3\b\u01d3\u0001\u01d4\u0001\u01d4\u0001"+
54650 		"\u01d5\u0001\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d7\u0001\u01d7\u0001"+
54651 		"\u01d7\u0003\u01d7\u1ace\b\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0003"+
54652 		"\u01d8\u1ad3\b\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001"+
54653 		"\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0005\u01d9\u1ade"+
54654 		"\b\u01d9\n\u01d9\f\u01d9\u1ae1\t\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9"+
54655 		"\u0003\u01d9\u1ae6\b\u01d9\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+
54656 		"\u0001\u01da\u0001\u01da\u0001\u01da\u0003\u01da\u1aef\b\u01da\u0001\u01da"+
54657 		"\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da"+
54658 		"\u0001\u01da\u0001\u01da\u0003\u01da\u1afa\b\u01da\u0001\u01da\u0001\u01da"+
54659 		"\u0001\u01da\u0001\u01da\u0003\u01da\u1b00\b\u01da\u0001\u01da\u0001\u01da"+
54660 		"\u0001\u01da\u0003\u01da\u1b05\b\u01da\u0003\u01da\u1b07\b\u01da\u0001"+
54661 		"\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0003\u01db\u1b0e"+
54662 		"\b\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0003\u01dc\u1b13\b\u01dc"+
54663 		"\u0001\u01dc\u0001\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+
54664 		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+
54665 		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1b24\b\u01dd\u0001\u01de"+
54666 		"\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+
54667 		"\u0001\u01de\u0003\u01de\u1b2e\b\u01de\u0001\u01df\u0001\u01df\u0001\u01df"+
54668 		"\u0001\u01df\u0003\u01df\u1b34\b\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0"+
54669 		"\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0003\u01e0\u1b3c\b\u01e0\u0001\u01e0"+
54670 		"\u0003\u01e0\u1b3f\b\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0"+
54671 		"\u0005\u01e0\u1b45\b\u01e0\n\u01e0\f\u01e0\u1b48\t\u01e0\u0003\u01e0\u1b4a"+
54672 		"\b\u01e0\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
54673 		"\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
54674 		"\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
54675 		"\u01e1\u0003\u01e1\u1b5e\b\u01e1\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001"+
54676 		"\u01e3\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0005"+
54677 		"\u01e4\u1b69\b\u01e4\n\u01e4\f\u01e4\u1b6c\t\u01e4\u0003\u01e4\u1b6e\b"+
54678 		"\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0003"+
54679 		"\u01e4\u1b75\b\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001"+
54680 		"\u01e5\u0001\u01e5\u0003\u01e5\u1b7d\b\u01e5\u0001\u01e6\u0001\u01e6\u0001"+
54681 		"\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0005\u01e6\u1b86"+
54682 		"\b\u01e6\n\u01e6\f\u01e6\u1b89\t\u01e6\u0003\u01e6\u1b8b\b\u01e6\u0001"+
54683 		"\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001"+
54684 		"\u01e7\u0003\u01e7\u1b94\b\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0003"+
54685 		"\u01e8\u1b99\b\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0005"+
54686 		"\u01e8\u1b9f\b\u01e8\n\u01e8\f\u01e8\u1ba2\t\u01e8\u0001\u01e9\u0001\u01e9"+
54687 		"\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9"+
54688 		"\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0003\u01e9\u1bb0\b\u01e9"+
54689 		"\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb"+
54690 		"\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0003\u01eb\u1bbc\b\u01eb"+
54691 		"\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0003\u01ec\u1bc2\b\u01ec"+
54692 		"\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0003\u01ed\u1bc8\b\u01ed"+
54693 		"\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0005\u01ed\u1bce\b\u01ed"+
54694 		"\n\u01ed\f\u01ed\u1bd1\t\u01ed\u0003\u01ed\u1bd3\b\u01ed\u0001\u01ee\u0001"+
54695 		"\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0003\u01ee\u1bdb"+
54696 		"\b\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01f0\u0001"+
54697 		"\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+
54698 		"\u01f0\u0005\u01f0\u1be9\b\u01f0\n\u01f0\f\u01f0\u1bec\t\u01f0\u0001\u01f0"+
54699 		"\u0003\u01f0\u1bef\b\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f2\u0001\u01f2"+
54700 		"\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0003\u01f2\u1bf9\b\u01f2"+
54701 		"\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0003\u01f2"+
54702 		"\u1c00\b\u01f2\u0003\u01f2\u1c02\b\u01f2\u0001\u01f2\u0001\u01f2\u0001"+
54703 		"\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001"+
54704 		"\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001"+
54705 		"\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0003"+
54706 		"\u01f2\u1c18\b\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001"+
54707 		"\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0003\u01f4\u1c22\b\u01f4\u0001"+
54708 		"\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0003\u01f5\u1c29"+
54709 		"\b\u01f5\u0001\u01f5\u0000\u0004blrt\u01f6\u0000\u0002\u0004\u0006\b\n"+
54710 		"\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.0246"+
54711 		"8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
54712 		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
54713 		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
54714 		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
54715 		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
54716 		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
54717 		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
54718 		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
54719 		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
54720 		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
54721 		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
54722 		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
54723 		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
54724 		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
54725 		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
54726 		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
54727 		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
54728 		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
54729 		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
54730 		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
54731 		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
54732 		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
54733 		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
54734 		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
54735 		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
54736 		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
54737 		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
54738 		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
54739 		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
54740 		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
54741 		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
54742 		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
54743 		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
54744 		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
54745 		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
54746 		"\u03bc\u03be\u03c0\u03c2\u03c4\u03c6\u03c8\u03ca\u03cc\u03ce\u03d0\u03d2"+
54747 		"\u03d4\u03d6\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea"+
54748 		"\u0000g\u0001\u0000ab\u0002\u0000\u0107\u0107\u0142\u0142\u0002\u0000"+
54749 		"\u02d3\u02d3\u02da\u02da\u0001\u0000\u000f\u0010\u0001\u0000\u0087\u0089"+
54750 		"\u0001\u0000mn2\u000056==EGRTbbvv{|\u0080\u0081\u0085\u0085\u0087\u0087"+
54751 		"\u0089\u0090\u0093\u0099\u009c\u009d\u009f\u009f\u00a1\u00a2\u00a4\u00a6"+
54752 		"\u00a9\u00aa\u00ad\u00ad\u00b0\u00b0\u00b8\u00b8\u00c2\u00c2\u00cb\u00cc"+
54753 		"\u00d0\u00d1\u00d5\u00d5\u00f1\u00f1\u00f3\u00f9\u00fb\u00fc\u0105\u0106"+
54754 		"\u0109\u010d\u010f\u0110\u0112\u011c\u011e\u0123\u0125\u012d\u012f\u0143"+
54755 		"\u014b\u01bd\u01bf\u01bf\u01c5\u01c5\u01d1\u01d3\u01f8\u0207\u020a\u020a"+
54756 		"\u020c\u0212\u0216\u0216\u021b\u021c\u021e\u0220\u0222\u0224\u0226\u022f"+
54757 		"\u023a\u029b\u02a4\u02a4\u02a9\u02a9\u02ad\u02ad\u0002\u0000\u02d1\u02d1"+
54758 		"\u02d3\u02d3\u0002\u0000\u0004\u0004hh\u0002\u0000\u0005\u0005ii\u0002"+
54759 		"\u0000\u0006\u0006kk\u0002\u0000ln\u00fa\u00fa\u0001\u0000rs\u0001\u0000"+
54760 		"\u0018\u001d\u0004\u0000\u0006\u0007\u000f\u0010,,\u00f1\u00f1\u0001\u0000"+
54761 		"\u0095\u0099\u0001\u0000\u00ed\u00ee\u0001\u0000xy\u0002\u0000RR\u02cf"+
54762 		"\u02cf\u0002\u0000\u0111\u0111\u02d0\u02d0\u0001\u0000\u00f8\u00f9\u0002"+
54763 		"\u0000\u00a9\u00a9\u01bf\u01bf\u0002\u0000\u0110\u0110\u011a\u011a\b\u0000"+
54764 		"\u0083\u0083\u0087\u0088\u00ad\u00af\u00b1\u00b9\u00f1\u00f1\u0164\u0164"+
54765 		"\u01c1\u01d0\u02d1\u02d1\u0001\u0000\u00eb\u00ec\u0001\u0000\u02db\u02dc"+
54766 		"\u0002\u0000\u00f9\u00f9\u0138\u0138\u0002\u0000\u019c\u019c\u01ad\u01ad"+
54767 		"\u0005\u0000\u00f8\u00f8\u010f\u010f\u012e\u012e\u0132\u0132\u0199\u0199"+
54768 		"\t\u0000\u0130\u0130\u013c\u013c\u0195\u0196\u019c\u019c\u01a5\u01a6\u01aa"+
54769 		"\u01ab\u01b0\u01b0\u01bc\u01bc\u01f2\u01f2\u0003\u0000\u010b\u010b\u012e"+
54770 		"\u012e\u013f\u013f\u0001\u0000\u0145\u0146\u0002\u0000\u00b0\u00b0\u012f"+
54771 		"\u012f\u0003\u0000\u00d8\u00e8\u021b\u021b\u021e\u021e\u0001\u0000HI\u0002"+
54772 		"\u0000\u00ba\u00ba\u00f9\u00f9\u0002\u0000\u0106\u0106\u011d\u011d\u0002"+
54773 		"\u0000\u0118\u0118\u0137\u0137\u0001\u0000\u010c\u010d\u0001\u000001\u0002"+
54774 		"\u0000ll\u009a\u009a\u0003\u0000\u00f8\u00f8\u012e\u012e\u0132\u0132\u0002"+
54775 		"\u0000\u0125\u0126\u0133\u0133\u0001\u0000\u01a8\u01a9\u0001\u0000[\\"+
54776 		"\u0002\u0000\u00fe\u00fe\u012d\u012d\u0001\u0000\u009c\u009d\u0003\u0000"+
54777 		"\u008c\u008c\u008e\u0090\u0112\u0115\u0003\u0000;;\u009d\u009d\u010a\u010a"+
54778 		"\u0002\u0000\u012e\u012e\u01f7\u01f7\u0003\u0000XXbb\u00cb\u00cb\u0001"+
54779 		"\u0000\u01fd\u0200\u0002\u0000\r\r\u01fd\u0200\u0001\u0000\u0207\u0208"+
54780 		"\u0001\u0000\u0209\u020c\u0002\u0000\u00cb\u00cb\u020d\u020e\u0003\u0000"+
54781 		"\u00d3\u00d3\u01d1\u01d1\u0215\u0215\u0003\u0000\u0175\u0175\u0210\u0210"+
54782 		"\u0220\u0220\u0002\u0000\u0106\u0106\u0229\u0229\u0002\u0000rr\u0100\u0100"+
54783 		"\u0001\u0000\u0289\u028a\u0001\u0000\u01fe\u01ff\u0003\u0000ab\u022d\u022d"+
54784 		"\u0283\u0283\u0002\u0000\u0130\u0130\u0281\u0282\u0002\u0000\u00cb\u00cb"+
54785 		"\u0238\u0238\u0001\u0000\u027e\u0280\u0002\u0000\u00c9\u00c9\u027b\u027c"+
54786 		"\u0001\u0000\u00c8\u00c9\u0001\u0000\u0235\u0236\u0002\u0000\u00d3\u00d3"+
54787 		"\u0237\u0237\u0002\u0000\u0115\u0116\u026b\u026b\u0002\u0000\u00a6\u00a6"+
54788 		"\u0269\u0269\u0002\u0000bb\u010a\u010a\u0004\u0000rr\u010a\u010a\u012e"+
54789 		"\u012e\u0264\u0264\u0002\u0000\u0115\u0115\u026b\u026b\u0003\u0000XX\u00c8"+
54790 		"\u00c8\u0255\u0255\u0002\u0000\u012e\u012e\u0253\u0254\u0002\u0000\u0116"+
54791 		"\u0116\u023f\u023f\u0002\u0000\u0014\u0014\u0018\u0018\u0002\u0000OOr"+
54792 		"r\u0002\u0000YY]]\u0002\u0000XX[\\\u0002\u0000ZZ]]\u0001\u0000\u01d2\u01d3"+
54793 		"\u0002\u0000uu\u0122\u0122\u0003\u0000\u00bf\u00bf\u0122\u0122\u014c\u014c"+
54794 		"\u0002\u0000\u00bf\u00c0\u0122\u0122\u0002\u0000\u009d\u009d\u00c4\u00c4"+
54795 		"\u0001\u0000\u02bc\u02bd\u0002\u0000\u010a\u010a\u02bf\u02bf\u0002\u0000"+
54796 		"UUgg\u0002\u0000\u00cc\u00cc\u014f\u014f\u0002\u0000\u0147\u0147\u0160"+
54797 		"\u0160\u0002\u0000\u00cc\u00cc\u018d\u018d\u0001\u0000\u0152\u0153\u0001"+
54798 		"\u0000\u0175\u0176\u0002\u0000\u00cc\u00cc\u0154\u0154\u0002\u0000..\u0145"+
54799 		"\u0145\u0002\u0000\u014a\u014a\u02a8\u02a8\u0005\u000066\u00cc\u00cc\u0104"+
54800 		"\u0105\u0129\u0129\u012f\u012f\u0002\u0000UUff\u0002\u0000\u02d8\u02d8"+
54801 		"\u02da\u02da\u0002\u0000\u02af\u02af\u02b4\u02b4\u2014\u0000\u0427\u0001"+
54802 		"\u0000\u0000\u0000\u0002\u042c\u0001\u0000\u0000\u0000\u0004\u043a\u0001"+
54803 		"\u0000\u0000\u0000\u0006\u043c\u0001\u0000\u0000\u0000\b\u0440\u0001\u0000"+
54804 		"\u0000\u0000\n\u0442\u0001\u0000\u0000\u0000\f\u0452\u0001\u0000\u0000"+
54805 		"\u0000\u000e\u0459\u0001\u0000\u0000\u0000\u0010\u0469\u0001\u0000\u0000"+
54806 		"\u0000\u0012\u046d\u0001\u0000\u0000\u0000\u0014\u0475\u0001\u0000\u0000"+
54807 		"\u0000\u0016\u0479\u0001\u0000\u0000\u0000\u0018\u047f\u0001\u0000\u0000"+
54808 		"\u0000\u001a\u0488\u0001\u0000\u0000\u0000\u001c\u048a\u0001\u0000\u0000"+
54809 		"\u0000\u001e\u048d\u0001\u0000\u0000\u0000 \u0498\u0001\u0000\u0000\u0000"+
54810 		"\"\u049a\u0001\u0000\u0000\u0000$\u049c\u0001\u0000\u0000\u0000&\u049e"+
54811 		"\u0001\u0000\u0000\u0000(\u04a0\u0001\u0000\u0000\u0000*\u04a4\u0001\u0000"+
54812 		"\u0000\u0000,\u04a8\u0001\u0000\u0000\u0000.\u04aa\u0001\u0000\u0000\u0000"+
54813 		"0\u04ac\u0001\u0000\u0000\u00002\u04ae\u0001\u0000\u0000\u00004\u04b0"+
54814 		"\u0001\u0000\u0000\u00006\u04b5\u0001\u0000\u0000\u00008\u04bc\u0001\u0000"+
54815 		"\u0000\u0000:\u04c6\u0001\u0000\u0000\u0000<\u04cd\u0001\u0000\u0000\u0000"+
54816 		">\u04d4\u0001\u0000\u0000\u0000@\u04db\u0001\u0000\u0000\u0000B\u04e8"+
54817 		"\u0001\u0000\u0000\u0000D\u04ec\u0001\u0000\u0000\u0000F\u04ee\u0001\u0000"+
54818 		"\u0000\u0000H\u04f8\u0001\u0000\u0000\u0000J\u04fe\u0001\u0000\u0000\u0000"+
54819 		"L\u0503\u0001\u0000\u0000\u0000N\u0505\u0001\u0000\u0000\u0000P\u0507"+
54820 		"\u0001\u0000\u0000\u0000R\u0512\u0001\u0000\u0000\u0000T\u051e\u0001\u0000"+
54821 		"\u0000\u0000V\u052b\u0001\u0000\u0000\u0000X\u052d\u0001\u0000\u0000\u0000"+
54822 		"Z\u052f\u0001\u0000\u0000\u0000\\\u0534\u0001\u0000\u0000\u0000^\u0536"+
54823 		"\u0001\u0000\u0000\u0000`\u0541\u0001\u0000\u0000\u0000b\u054e\u0001\u0000"+
54824 		"\u0000\u0000d\u0561\u0001\u0000\u0000\u0000f\u0563\u0001\u0000\u0000\u0000"+
54825 		"h\u0565\u0001\u0000\u0000\u0000j\u056c\u0001\u0000\u0000\u0000l\u056e"+
54826 		"\u0001\u0000\u0000\u0000n\u0588\u0001\u0000\u0000\u0000p\u05b5\u0001\u0000"+
54827 		"\u0000\u0000r\u05b7\u0001\u0000\u0000\u0000t\u05fe\u0001\u0000\u0000\u0000"+
54828 		"v\u060b\u0001\u0000\u0000\u0000x\u060d\u0001\u0000\u0000\u0000z\u061f"+
54829 		"\u0001\u0000\u0000\u0000|\u0621\u0001\u0000\u0000\u0000~\u062a\u0001\u0000"+
54830 		"\u0000\u0000\u0080\u062c\u0001\u0000\u0000\u0000\u0082\u063d\u0001\u0000"+
54831 		"\u0000\u0000\u0084\u063f\u0001\u0000\u0000\u0000\u0086\u0646\u0001\u0000"+
54832 		"\u0000\u0000\u0088\u0653\u0001\u0000\u0000\u0000\u008a\u0655\u0001\u0000"+
54833 		"\u0000\u0000\u008c\u0666\u0001\u0000\u0000\u0000\u008e\u0675\u0001\u0000"+
54834 		"\u0000\u0000\u0090\u067f\u0001\u0000\u0000\u0000\u0092\u0681\u0001\u0000"+
54835 		"\u0000\u0000\u0094\u0691\u0001\u0000\u0000\u0000\u0096\u069c\u0001\u0000"+
54836 		"\u0000\u0000\u0098\u06a8\u0001\u0000\u0000\u0000\u009a\u06d2\u0001\u0000"+
54837 		"\u0000\u0000\u009c\u06d4\u0001\u0000\u0000\u0000\u009e\u06ed\u0001\u0000"+
54838 		"\u0000\u0000\u00a0\u06ef\u0001\u0000\u0000\u0000\u00a2\u06fd\u0001\u0000"+
54839 		"\u0000\u0000\u00a4\u0702\u0001\u0000\u0000\u0000\u00a6\u0709\u0001\u0000"+
54840 		"\u0000\u0000\u00a8\u070b\u0001\u0000\u0000\u0000\u00aa\u0725\u0001\u0000"+
54841 		"\u0000\u0000\u00ac\u0731\u0001\u0000\u0000\u0000\u00ae\u0741\u0001\u0000"+
54842 		"\u0000\u0000\u00b0\u0743\u0001\u0000\u0000\u0000\u00b2\u074b\u0001\u0000"+
54843 		"\u0000\u0000\u00b4\u0757\u0001\u0000\u0000\u0000\u00b6\u0764\u0001\u0000"+
54844 		"\u0000\u0000\u00b8\u076d\u0001\u0000\u0000\u0000\u00ba\u0770\u0001\u0000"+
54845 		"\u0000\u0000\u00bc\u077d\u0001\u0000\u0000\u0000\u00be\u0787\u0001\u0000"+
54846 		"\u0000\u0000\u00c0\u078c\u0001\u0000\u0000\u0000\u00c2\u078e\u0001\u0000"+
54847 		"\u0000\u0000\u00c4\u0795\u0001\u0000\u0000\u0000\u00c6\u079d\u0001\u0000"+
54848 		"\u0000\u0000\u00c8\u07a5\u0001\u0000\u0000\u0000\u00ca\u07a7\u0001\u0000"+
54849 		"\u0000\u0000\u00cc\u07b8\u0001\u0000\u0000\u0000\u00ce\u07ba\u0001\u0000"+
54850 		"\u0000\u0000\u00d0\u07be\u0001\u0000\u0000\u0000\u00d2\u07c3\u0001\u0000"+
54851 		"\u0000\u0000\u00d4\u07c6\u0001\u0000\u0000\u0000\u00d6\u07c8\u0001\u0000"+
54852 		"\u0000\u0000\u00d8\u07cb\u0001\u0000\u0000\u0000\u00da\u07d1\u0001\u0000"+
54853 		"\u0000\u0000\u00dc\u07db\u0001\u0000\u0000\u0000\u00de\u07dd\u0001\u0000"+
54854 		"\u0000\u0000\u00e0\u07e1\u0001\u0000\u0000\u0000\u00e2\u07ef\u0001\u0000"+
54855 		"\u0000\u0000\u00e4\u07f6\u0001\u0000\u0000\u0000\u00e6\u07f8\u0001\u0000"+
54856 		"\u0000\u0000\u00e8\u0800\u0001\u0000\u0000\u0000\u00ea\u0802\u0001\u0000"+
54857 		"\u0000\u0000\u00ec\u0804\u0001\u0000\u0000\u0000\u00ee\u080c\u0001\u0000"+
54858 		"\u0000\u0000\u00f0\u080e\u0001\u0000\u0000\u0000\u00f2\u0810\u0001\u0000"+
54859 		"\u0000\u0000\u00f4\u0812\u0001\u0000\u0000\u0000\u00f6\u0814\u0001\u0000"+
54860 		"\u0000\u0000\u00f8\u0816\u0001\u0000\u0000\u0000\u00fa\u0819\u0001\u0000"+
54861 		"\u0000\u0000\u00fc\u081b\u0001\u0000\u0000\u0000\u00fe\u081d\u0001\u0000"+
54862 		"\u0000\u0000\u0100\u0828\u0001\u0000\u0000\u0000\u0102\u082c\u0001\u0000"+
54863 		"\u0000\u0000\u0104\u082e\u0001\u0000\u0000\u0000\u0106\u0834\u0001\u0000"+
54864 		"\u0000\u0000\u0108\u083d\u0001\u0000\u0000\u0000\u010a\u0842\u0001\u0000"+
54865 		"\u0000\u0000\u010c\u084c\u0001\u0000\u0000\u0000\u010e\u0856\u0001\u0000"+
54866 		"\u0000\u0000\u0110\u085f\u0001\u0000\u0000\u0000\u0112\u086a\u0001\u0000"+
54867 		"\u0000\u0000\u0114\u0873\u0001\u0000\u0000\u0000\u0116\u0880\u0001\u0000"+
54868 		"\u0000\u0000\u0118\u0889\u0001\u0000\u0000\u0000\u011a\u0894\u0001\u0000"+
54869 		"\u0000\u0000\u011c\u089e\u0001\u0000\u0000\u0000\u011e\u08aa\u0001\u0000"+
54870 		"\u0000\u0000\u0120\u08b0\u0001\u0000\u0000\u0000\u0122\u08b6\u0001\u0000"+
54871 		"\u0000\u0000\u0124\u08bb\u0001\u0000\u0000\u0000\u0126\u08c2\u0001\u0000"+
54872 		"\u0000\u0000\u0128\u08cb\u0001\u0000\u0000\u0000\u012a\u08d6\u0001\u0000"+
54873 		"\u0000\u0000\u012c\u08df\u0001\u0000\u0000\u0000\u012e\u08e6\u0001\u0000"+
54874 		"\u0000\u0000\u0130\u08ef\u0001\u0000\u0000\u0000\u0132\u08fc\u0001\u0000"+
54875 		"\u0000\u0000\u0134\u0909\u0001\u0000\u0000\u0000\u0136\u0916\u0001\u0000"+
54876 		"\u0000\u0000\u0138\u0923\u0001\u0000\u0000\u0000\u013a\u0938\u0001\u0000"+
54877 		"\u0000\u0000\u013c\u0945\u0001\u0000\u0000\u0000\u013e\u0949\u0001\u0000"+
54878 		"\u0000\u0000\u0140\u0950\u0001\u0000\u0000\u0000\u0142\u0954\u0001\u0000"+
54879 		"\u0000\u0000\u0144\u096a\u0001\u0000\u0000\u0000\u0146\u098b\u0001\u0000"+
54880 		"\u0000\u0000\u0148\u0991\u0001\u0000\u0000\u0000\u014a\u09a2\u0001\u0000"+
54881 		"\u0000\u0000\u014c\u09a6\u0001\u0000\u0000\u0000\u014e\u09a8\u0001\u0000"+
54882 		"\u0000\u0000\u0150\u09ac\u0001\u0000\u0000\u0000\u0152\u09c0\u0001\u0000"+
54883 		"\u0000\u0000\u0154\u09c2\u0001\u0000\u0000\u0000\u0156\u0a03\u0001\u0000"+
54884 		"\u0000\u0000\u0158\u0a05\u0001\u0000\u0000\u0000\u015a\u0a15\u0001\u0000"+
54885 		"\u0000\u0000\u015c\u0a1e\u0001\u0000\u0000\u0000\u015e\u0a27\u0001\u0000"+
54886 		"\u0000\u0000\u0160\u0a44\u0001\u0000\u0000\u0000\u0162\u0a48\u0001\u0000"+
54887 		"\u0000\u0000\u0164\u0a4f\u0001\u0000\u0000\u0000\u0166\u0a57\u0001\u0000"+
54888 		"\u0000\u0000\u0168\u0a59\u0001\u0000\u0000\u0000\u016a\u0a6d\u0001\u0000"+
54889 		"\u0000\u0000\u016c\u0a6f\u0001\u0000\u0000\u0000\u016e\u0a75\u0001\u0000"+
54890 		"\u0000\u0000\u0170\u0a78\u0001\u0000\u0000\u0000\u0172\u0a81\u0001\u0000"+
54891 		"\u0000\u0000\u0174\u0a83\u0001\u0000\u0000\u0000\u0176\u0a8c\u0001\u0000"+
54892 		"\u0000\u0000\u0178\u0aa2\u0001\u0000\u0000\u0000\u017a\u0aa9\u0001\u0000"+
54893 		"\u0000\u0000\u017c\u0aab\u0001\u0000\u0000\u0000\u017e\u0ab5\u0001\u0000"+
54894 		"\u0000\u0000\u0180\u0ac3\u0001\u0000\u0000\u0000\u0182\u0ad2\u0001\u0000"+
54895 		"\u0000\u0000\u0184\u0ad4\u0001\u0000\u0000\u0000\u0186\u0ad7\u0001\u0000"+
54896 		"\u0000\u0000\u0188\u0ae5\u0001\u0000\u0000\u0000\u018a\u0ae7\u0001\u0000"+
54897 		"\u0000\u0000\u018c\u0af4\u0001\u0000\u0000\u0000\u018e\u0afc\u0001\u0000"+
54898 		"\u0000\u0000\u0190\u0b03\u0001\u0000\u0000\u0000\u0192\u0b0a\u0001\u0000"+
54899 		"\u0000\u0000\u0194\u0b0d\u0001\u0000\u0000\u0000\u0196\u0b16\u0001\u0000"+
54900 		"\u0000\u0000\u0198\u0b1b\u0001\u0000\u0000\u0000\u019a\u0b21\u0001\u0000"+
54901 		"\u0000\u0000\u019c\u0b2d\u0001\u0000\u0000\u0000\u019e\u0b45\u0001\u0000"+
54902 		"\u0000\u0000\u01a0\u0b47\u0001\u0000\u0000\u0000\u01a2\u0b52\u0001\u0000"+
54903 		"\u0000\u0000\u01a4\u0b65\u0001\u0000\u0000\u0000\u01a6\u0b6c\u0001\u0000"+
54904 		"\u0000\u0000\u01a8\u0b7b\u0001\u0000\u0000\u0000\u01aa\u0bb8\u0001\u0000"+
54905 		"\u0000\u0000\u01ac\u0bba\u0001\u0000\u0000\u0000\u01ae\u0bc6\u0001\u0000"+
54906 		"\u0000\u0000\u01b0\u0bd8\u0001\u0000\u0000\u0000\u01b2\u0bde\u0001\u0000"+
54907 		"\u0000\u0000\u01b4\u0bf0\u0001\u0000\u0000\u0000\u01b6\u0bf2\u0001\u0000"+
54908 		"\u0000\u0000\u01b8\u0c19\u0001\u0000\u0000\u0000\u01ba\u0c1b\u0001\u0000"+
54909 		"\u0000\u0000\u01bc\u0c31\u0001\u0000\u0000\u0000\u01be\u0c3f\u0001\u0000"+
54910 		"\u0000\u0000\u01c0\u0c43\u0001\u0000\u0000\u0000\u01c2\u0c4a\u0001\u0000"+
54911 		"\u0000\u0000\u01c4\u0c58\u0001\u0000\u0000\u0000\u01c6\u0c5c\u0001\u0000"+
54912 		"\u0000\u0000\u01c8\u0c6a\u0001\u0000\u0000\u0000\u01ca\u0c6e\u0001\u0000"+
54913 		"\u0000\u0000\u01cc\u0c7d\u0001\u0000\u0000\u0000\u01ce\u0c7f\u0001\u0000"+
54914 		"\u0000\u0000\u01d0\u0c89\u0001\u0000\u0000\u0000\u01d2\u0c9d\u0001\u0000"+
54915 		"\u0000\u0000\u01d4\u0ca7\u0001\u0000\u0000\u0000\u01d6\u0cb4\u0001\u0000"+
54916 		"\u0000\u0000\u01d8\u0cb8\u0001\u0000\u0000\u0000\u01da\u0cd5\u0001\u0000"+
54917 		"\u0000\u0000\u01dc\u0cd7\u0001\u0000\u0000\u0000\u01de\u0cd9\u0001\u0000"+
54918 		"\u0000\u0000\u01e0\u0ce5\u0001\u0000\u0000\u0000\u01e2\u0cf2\u0001\u0000"+
54919 		"\u0000\u0000\u01e4\u0cfa\u0001\u0000\u0000\u0000\u01e6\u0d00\u0001\u0000"+
54920 		"\u0000\u0000\u01e8\u0d12\u0001\u0000\u0000\u0000\u01ea\u0d1a\u0001\u0000"+
54921 		"\u0000\u0000\u01ec\u0d21\u0001\u0000\u0000\u0000\u01ee\u0d2a\u0001\u0000"+
54922 		"\u0000\u0000\u01f0\u0d39\u0001\u0000\u0000\u0000\u01f2\u0d40\u0001\u0000"+
54923 		"\u0000\u0000\u01f4\u0d49\u0001\u0000\u0000\u0000\u01f6\u0d4b\u0001\u0000"+
54924 		"\u0000\u0000\u01f8\u0d50\u0001\u0000\u0000\u0000\u01fa\u0d53\u0001\u0000"+
54925 		"\u0000\u0000\u01fc\u0d5e\u0001\u0000\u0000\u0000\u01fe\u0d60\u0001\u0000"+
54926 		"\u0000\u0000\u0200\u0d80\u0001\u0000\u0000\u0000\u0202\u0d82\u0001\u0000"+
54927 		"\u0000\u0000\u0204\u0d91\u0001\u0000\u0000\u0000\u0206\u0da5\u0001\u0000"+
54928 		"\u0000\u0000\u0208\u0ddc\u0001\u0000\u0000\u0000\u020a\u0de4\u0001\u0000"+
54929 		"\u0000\u0000\u020c\u0de6\u0001\u0000\u0000\u0000\u020e\u0df8\u0001\u0000"+
54930 		"\u0000\u0000\u0210\u0e0f\u0001\u0000\u0000\u0000\u0212\u0e25\u0001\u0000"+
54931 		"\u0000\u0000\u0214\u0e31\u0001\u0000\u0000\u0000\u0216\u0e33\u0001\u0000"+
54932 		"\u0000\u0000\u0218\u0e4b\u0001\u0000\u0000\u0000\u021a\u0e4d\u0001\u0000"+
54933 		"\u0000\u0000\u021c\u0e53\u0001\u0000\u0000\u0000\u021e\u0e61\u0001\u0000"+
54934 		"\u0000\u0000\u0220\u0e63\u0001\u0000\u0000\u0000\u0222\u0e91\u0001\u0000"+
54935 		"\u0000\u0000\u0224\u0ea5\u0001\u0000\u0000\u0000\u0226\u0ea7\u0001\u0000"+
54936 		"\u0000\u0000\u0228\u0ec2\u0001\u0000\u0000\u0000\u022a\u0ed7\u0001\u0000"+
54937 		"\u0000\u0000\u022c\u0eda\u0001\u0000\u0000\u0000\u022e\u0ef5\u0001\u0000"+
54938 		"\u0000\u0000\u0230\u0ef7\u0001\u0000\u0000\u0000\u0232\u0f13\u0001\u0000"+
54939 		"\u0000\u0000\u0234\u0f15\u0001\u0000\u0000\u0000\u0236\u0f2c\u0001\u0000"+
54940 		"\u0000\u0000\u0238\u0f44\u0001\u0000\u0000\u0000\u023a\u0f5d\u0001\u0000"+
54941 		"\u0000\u0000\u023c\u0f68\u0001\u0000\u0000\u0000\u023e\u0f84\u0001\u0000"+
54942 		"\u0000\u0000\u0240\u0f90\u0001\u0000\u0000\u0000\u0242\u0f9d\u0001\u0000"+
54943 		"\u0000\u0000\u0244\u0f9f\u0001\u0000\u0000\u0000\u0246\u0fab\u0001\u0000"+
54944 		"\u0000\u0000\u0248\u0fb4\u0001\u0000\u0000\u0000\u024a\u0fc4\u0001\u0000"+
54945 		"\u0000\u0000\u024c\u0fe9\u0001\u0000\u0000\u0000\u024e\u1001\u0001\u0000"+
54946 		"\u0000\u0000\u0250\u100c\u0001\u0000\u0000\u0000\u0252\u1018\u0001\u0000"+
54947 		"\u0000\u0000\u0254\u101a\u0001\u0000\u0000\u0000\u0256\u1023\u0001\u0000"+
54948 		"\u0000\u0000\u0258\u103b\u0001\u0000\u0000\u0000\u025a\u106a\u0001\u0000"+
54949 		"\u0000\u0000\u025c\u106c\u0001\u0000\u0000\u0000\u025e\u1077\u0001\u0000"+
54950 		"\u0000\u0000\u0260\u1095\u0001\u0000\u0000\u0000\u0262\u1099\u0001\u0000"+
54951 		"\u0000\u0000\u0264\u10bf\u0001\u0000\u0000\u0000\u0266\u10d8\u0001\u0000"+
54952 		"\u0000\u0000\u0268\u1118\u0001\u0000\u0000\u0000\u026a\u115d\u0001\u0000"+
54953 		"\u0000\u0000\u026c\u115f\u0001\u0000\u0000\u0000\u026e\u116a\u0001\u0000"+
54954 		"\u0000\u0000\u0270\u1181\u0001\u0000\u0000\u0000\u0272\u118d\u0001\u0000"+
54955 		"\u0000\u0000\u0274\u11c5\u0001\u0000\u0000\u0000\u0276\u11d3\u0001\u0000"+
54956 		"\u0000\u0000\u0278\u11e2\u0001\u0000\u0000\u0000\u027a\u11ec\u0001\u0000"+
54957 		"\u0000\u0000\u027c\u1219\u0001\u0000\u0000\u0000\u027e\u121f\u0001\u0000"+
54958 		"\u0000\u0000\u0280\u1237\u0001\u0000\u0000\u0000\u0282\u123b\u0001\u0000"+
54959 		"\u0000\u0000\u0284\u125d\u0001\u0000\u0000\u0000\u0286\u125f\u0001\u0000"+
54960 		"\u0000\u0000\u0288\u127e\u0001\u0000\u0000\u0000\u028a\u1280\u0001\u0000"+
54961 		"\u0000\u0000\u028c\u1287\u0001\u0000\u0000\u0000\u028e\u12a4\u0001\u0000"+
54962 		"\u0000\u0000\u0290\u12aa\u0001\u0000\u0000\u0000\u0292\u12bf\u0001\u0000"+
54963 		"\u0000\u0000\u0294\u12c1\u0001\u0000\u0000\u0000\u0296\u1303\u0001\u0000"+
54964 		"\u0000\u0000\u0298\u1312\u0001\u0000\u0000\u0000\u029a\u131a\u0001\u0000"+
54965 		"\u0000\u0000\u029c\u1331\u0001\u0000\u0000\u0000\u029e\u133a\u0001\u0000"+
54966 		"\u0000\u0000\u02a0\u1342\u0001\u0000\u0000\u0000\u02a2\u1344\u0001\u0000"+
54967 		"\u0000\u0000\u02a4\u1352\u0001\u0000\u0000\u0000\u02a6\u1354\u0001\u0000"+
54968 		"\u0000\u0000\u02a8\u135f\u0001\u0000\u0000\u0000\u02aa\u1370\u0001\u0000"+
54969 		"\u0000\u0000\u02ac\u1379\u0001\u0000\u0000\u0000\u02ae\u1380\u0001\u0000"+
54970 		"\u0000\u0000\u02b0\u1384\u0001\u0000\u0000\u0000\u02b2\u1386\u0001\u0000"+
54971 		"\u0000\u0000\u02b4\u1391\u0001\u0000\u0000\u0000\u02b6\u13a4\u0001\u0000"+
54972 		"\u0000\u0000\u02b8\u13c0\u0001\u0000\u0000\u0000\u02ba\u13c3\u0001\u0000"+
54973 		"\u0000\u0000\u02bc\u13dd\u0001\u0000\u0000\u0000\u02be\u13e6\u0001\u0000"+
54974 		"\u0000\u0000\u02c0\u13f5\u0001\u0000\u0000\u0000\u02c2\u13fd\u0001\u0000"+
54975 		"\u0000\u0000\u02c4\u1401\u0001\u0000\u0000\u0000\u02c6\u140a\u0001\u0000"+
54976 		"\u0000\u0000\u02c8\u1417\u0001\u0000\u0000\u0000\u02ca\u1428\u0001\u0000"+
54977 		"\u0000\u0000\u02cc\u142c\u0001\u0000\u0000\u0000\u02ce\u1445\u0001\u0000"+
54978 		"\u0000\u0000\u02d0\u1449\u0001\u0000\u0000\u0000\u02d2\u144c\u0001\u0000"+
54979 		"\u0000\u0000\u02d4\u145f\u0001\u0000\u0000\u0000\u02d6\u1463\u0001\u0000"+
54980 		"\u0000\u0000\u02d8\u147b\u0001\u0000\u0000\u0000\u02da\u147d\u0001\u0000"+
54981 		"\u0000\u0000\u02dc\u148b\u0001\u0000\u0000\u0000\u02de\u148d\u0001\u0000"+
54982 		"\u0000\u0000\u02e0\u149d\u0001\u0000\u0000\u0000\u02e2\u14b9\u0001\u0000"+
54983 		"\u0000\u0000\u02e4\u14c0\u0001\u0000\u0000\u0000\u02e6\u14de\u0001\u0000"+
54984 		"\u0000\u0000\u02e8\u14e0\u0001\u0000\u0000\u0000\u02ea\u1500\u0001\u0000"+
54985 		"\u0000\u0000\u02ec\u1502\u0001\u0000\u0000\u0000\u02ee\u1504\u0001\u0000"+
54986 		"\u0000\u0000\u02f0\u1507\u0001\u0000\u0000\u0000\u02f2\u150a\u0001\u0000"+
54987 		"\u0000\u0000\u02f4\u150d\u0001\u0000\u0000\u0000\u02f6\u1515\u0001\u0000"+
54988 		"\u0000\u0000\u02f8\u1536\u0001\u0000\u0000\u0000\u02fa\u1556\u0001\u0000"+
54989 		"\u0000\u0000\u02fc\u155c\u0001\u0000\u0000\u0000\u02fe\u155e\u0001\u0000"+
54990 		"\u0000\u0000\u0300\u1561\u0001\u0000\u0000\u0000\u0302\u156b\u0001\u0000"+
54991 		"\u0000\u0000\u0304\u156e\u0001\u0000\u0000\u0000\u0306\u1572\u0001\u0000"+
54992 		"\u0000\u0000\u0308\u1575\u0001\u0000\u0000\u0000\u030a\u157d\u0001\u0000"+
54993 		"\u0000\u0000\u030c\u1584\u0001\u0000\u0000\u0000\u030e\u1590\u0001\u0000"+
54994 		"\u0000\u0000\u0310\u1598\u0001\u0000\u0000\u0000\u0312\u15a1\u0001\u0000"+
54995 		"\u0000\u0000\u0314\u15a7\u0001\u0000\u0000\u0000\u0316\u15f0\u0001\u0000"+
54996 		"\u0000\u0000\u0318\u1628\u0001\u0000\u0000\u0000\u031a\u162a\u0001\u0000"+
54997 		"\u0000\u0000\u031c\u1630\u0001\u0000\u0000\u0000\u031e\u1670\u0001\u0000"+
54998 		"\u0000\u0000\u0320\u1680\u0001\u0000\u0000\u0000\u0322\u1696\u0001\u0000"+
54999 		"\u0000\u0000\u0324\u16a0\u0001\u0000\u0000\u0000\u0326\u16b1\u0001\u0000"+
55000 		"\u0000\u0000\u0328\u16b3\u0001\u0000\u0000\u0000\u032a\u16b5\u0001\u0000"+
55001 		"\u0000\u0000\u032c\u16b7\u0001\u0000\u0000\u0000\u032e\u16ba\u0001\u0000"+
55002 		"\u0000\u0000\u0330\u16bf\u0001\u0000\u0000\u0000\u0332\u16d6\u0001\u0000"+
55003 		"\u0000\u0000\u0334\u16e9\u0001\u0000\u0000\u0000\u0336\u16fb\u0001\u0000"+
55004 		"\u0000\u0000\u0338\u16ff\u0001\u0000\u0000\u0000\u033a\u170b\u0001\u0000"+
55005 		"\u0000\u0000\u033c\u1712\u0001\u0000\u0000\u0000\u033e\u1716\u0001\u0000"+
55006 		"\u0000\u0000\u0340\u1718\u0001\u0000\u0000\u0000\u0342\u1720\u0001\u0000"+
55007 		"\u0000\u0000\u0344\u1735\u0001\u0000\u0000\u0000\u0346\u1746\u0001\u0000"+
55008 		"\u0000\u0000\u0348\u174b\u0001\u0000\u0000\u0000\u034a\u1760\u0001\u0000"+
55009 		"\u0000\u0000\u034c\u1771\u0001\u0000\u0000\u0000\u034e\u178c\u0001\u0000"+
55010 		"\u0000\u0000\u0350\u179e\u0001\u0000\u0000\u0000\u0352\u17ed\u0001\u0000"+
55011 		"\u0000\u0000\u0354\u1801\u0001\u0000\u0000\u0000\u0356\u18aa\u0001\u0000"+
55012 		"\u0000\u0000\u0358\u18af\u0001\u0000\u0000\u0000\u035a\u18b9\u0001\u0000"+
55013 		"\u0000\u0000\u035c\u18c4\u0001\u0000\u0000\u0000\u035e\u18ce\u0001\u0000"+
55014 		"\u0000\u0000\u0360\u18d7\u0001\u0000\u0000\u0000\u0362\u18ed\u0001\u0000"+
55015 		"\u0000\u0000\u0364\u18fa\u0001\u0000\u0000\u0000\u0366\u1901\u0001\u0000"+
55016 		"\u0000\u0000\u0368\u190d\u0001\u0000\u0000\u0000\u036a\u191a\u0001\u0000"+
55017 		"\u0000\u0000\u036c\u1927\u0001\u0000\u0000\u0000\u036e\u1932\u0001\u0000"+
55018 		"\u0000\u0000\u0370\u193e\u0001\u0000\u0000\u0000\u0372\u1950\u0001\u0000"+
55019 		"\u0000\u0000\u0374\u195c\u0001\u0000\u0000\u0000\u0376\u1969\u0001\u0000"+
55020 		"\u0000\u0000\u0378\u1976\u0001\u0000\u0000\u0000\u037a\u1982\u0001\u0000"+
55021 		"\u0000\u0000\u037c\u1995\u0001\u0000\u0000\u0000\u037e\u1999\u0001\u0000"+
55022 		"\u0000\u0000\u0380\u19a6\u0001\u0000\u0000\u0000\u0382\u19b3\u0001\u0000"+
55023 		"\u0000\u0000\u0384\u19bc\u0001\u0000\u0000\u0000\u0386\u19c6\u0001\u0000"+
55024 		"\u0000\u0000\u0388\u19c8\u0001\u0000\u0000\u0000\u038a\u19ca\u0001\u0000"+
55025 		"\u0000\u0000\u038c\u19f6\u0001\u0000\u0000\u0000\u038e\u19f8\u0001\u0000"+
55026 		"\u0000\u0000\u0390\u19fa\u0001\u0000\u0000\u0000\u0392\u19fc\u0001\u0000"+
55027 		"\u0000\u0000\u0394\u1a04\u0001\u0000\u0000\u0000\u0396\u1a10\u0001\u0000"+
55028 		"\u0000\u0000\u0398\u1a42\u0001\u0000\u0000\u0000\u039a\u1a4f\u0001\u0000"+
55029 		"\u0000\u0000\u039c\u1a5c\u0001\u0000\u0000\u0000\u039e\u1a84\u0001\u0000"+
55030 		"\u0000\u0000\u03a0\u1a94\u0001\u0000\u0000\u0000\u03a2\u1aaa\u0001\u0000"+
55031 		"\u0000\u0000\u03a4\u1aac\u0001\u0000\u0000\u0000\u03a6\u1aba\u0001\u0000"+
55032 		"\u0000\u0000\u03a8\u1ac4\u0001\u0000\u0000\u0000\u03aa\u1ac6\u0001\u0000"+
55033 		"\u0000\u0000\u03ac\u1ac8\u0001\u0000\u0000\u0000\u03ae\u1aca\u0001\u0000"+
55034 		"\u0000\u0000\u03b0\u1acf\u0001\u0000\u0000\u0000\u03b2\u1ad6\u0001\u0000"+
55035 		"\u0000\u0000\u03b4\u1b06\u0001\u0000\u0000\u0000\u03b6\u1b08\u0001\u0000"+
55036 		"\u0000\u0000\u03b8\u1b0f\u0001\u0000\u0000\u0000\u03ba\u1b16\u0001\u0000"+
55037 		"\u0000\u0000\u03bc\u1b25\u0001\u0000\u0000\u0000\u03be\u1b33\u0001\u0000"+
55038 		"\u0000\u0000\u03c0\u1b35\u0001\u0000\u0000\u0000\u03c2\u1b5d\u0001\u0000"+
55039 		"\u0000\u0000\u03c4\u1b5f\u0001\u0000\u0000\u0000\u03c6\u1b61\u0001\u0000"+
55040 		"\u0000\u0000\u03c8\u1b74\u0001\u0000\u0000\u0000\u03ca\u1b7c\u0001\u0000"+
55041 		"\u0000\u0000\u03cc\u1b8a\u0001\u0000\u0000\u0000\u03ce\u1b8c\u0001\u0000"+
55042 		"\u0000\u0000\u03d0\u1b98\u0001\u0000\u0000\u0000\u03d2\u1baf\u0001\u0000"+
55043 		"\u0000\u0000\u03d4\u1bb1\u0001\u0000\u0000\u0000\u03d6\u1bb4\u0001\u0000"+
55044 		"\u0000\u0000\u03d8\u1bc1\u0001\u0000\u0000\u0000\u03da\u1bc3\u0001\u0000"+
55045 		"\u0000\u0000\u03dc\u1bda\u0001\u0000\u0000\u0000\u03de\u1bdc\u0001\u0000"+
55046 		"\u0000\u0000\u03e0\u1be0\u0001\u0000\u0000\u0000\u03e2\u1bf0\u0001\u0000"+
55047 		"\u0000\u0000\u03e4\u1c17\u0001\u0000\u0000\u0000\u03e6\u1c19\u0001\u0000"+
55048 		"\u0000\u0000\u03e8\u1c21\u0001\u0000\u0000\u0000\u03ea\u1c23\u0001\u0000"+
55049 		"\u0000\u0000\u03ec\u0428\u0003\u02dc\u016e\u0000\u03ed\u0428\u0003\u02ba"+
55050 		"\u015d\u0000\u03ee\u0428\u0003\u02c8\u0164\u0000\u03ef\u0428\u0003\u02d2"+
55051 		"\u0169\u0000\u03f0\u0428\u0003\u0106\u0083\u0000\u03f1\u0428\u0003\u011a"+
55052 		"\u008d\u0000\u03f2\u0428\u0003\u012e\u0097\u0000\u03f3\u0428\u0003\u0102"+
55053 		"\u0081\u0000\u03f4\u0428\u0003\u0108\u0084\u0000\u03f5\u0428\u0003\u010c"+
55054 		"\u0086\u0000\u03f6\u0428\u0003\u010e\u0087\u0000\u03f7\u0428\u0003\u0110"+
55055 		"\u0088\u0000\u03f8\u0428\u0003\u0112\u0089\u0000\u03f9\u0428\u0003\u0114"+
55056 		"\u008a\u0000\u03fa\u0428\u0003\u0116\u008b\u0000\u03fb\u0428\u0003\u0118"+
55057 		"\u008c\u0000\u03fc\u0428\u0003\u0124\u0092\u0000\u03fd\u0428\u0003\u0126"+
55058 		"\u0093\u0000\u03fe\u0428\u0003\u011c\u008e\u0000\u03ff\u0428\u0003\u0128"+
55059 		"\u0094\u0000\u0400\u0428\u0003\u012a\u0095\u0000\u0401\u0428\u0003\u0122"+
55060 		"\u0091\u0000\u0402\u0428\u0003\u012c\u0096\u0000\u0403\u0428\u0003\u0130"+
55061 		"\u0098\u0000\u0404\u0428\u0003\u0132\u0099\u0000\u0405\u0428\u0003\u0134"+
55062 		"\u009a\u0000\u0406\u0428\u0003\u0136\u009b\u0000\u0407\u0428\u0003\u0138"+
55063 		"\u009c\u0000\u0408\u0428\u0003\u013a\u009d\u0000\u0409\u0428\u0003\u013c"+
55064 		"\u009e\u0000\u040a\u0428\u0003\u013e\u009f\u0000\u040b\u0428\u0003\u0140"+
55065 		"\u00a0\u0000\u040c\u0428\u0003\u010a\u0085\u0000\u040d\u0428\u0003\u0002"+
55066 		"\u0001\u0000\u040e\u0428\u0003\n\u0005\u0000\u040f\u0428\u0003\f\u0006"+
55067 		"\u0000\u0410\u0428\u0003\u0006\u0003\u0000\u0411\u0428\u0003\u000e\u0007"+
55068 		"\u0000\u0412\u0428\u0003\u0010\b\u0000\u0413\u0428\u0003\u0012\t\u0000"+
55069 		"\u0414\u0428\u0003\u0014\n\u0000\u0415\u0428\u0003\u0016\u000b\u0000\u0416"+
55070 		"\u0428\u0003\u032e\u0197\u0000\u0417\u0428\u0003\u0340\u01a0\u0000\u0418"+
55071 		"\u0428\u0003\u0346\u01a3\u0000\u0419\u0428\u0003\u0394\u01ca\u0000\u041a"+
55072 		"\u0428\u0003\u03b0\u01d8\u0000\u041b\u0428\u0003\u03b2\u01d9\u0000\u041c"+
55073 		"\u0428\u0003\u03b6\u01db\u0000\u041d\u0428\u0003\u03b8\u01dc\u0000\u041e"+
55074 		"\u0428\u0003\u03ba\u01dd\u0000\u041f\u0428\u0003\u03bc\u01de\u0000\u0420"+
55075 		"\u0428\u0003\u03de\u01ef\u0000\u0421\u0428\u0003\u03e0\u01f0\u0000\u0422"+
55076 		"\u0428\u0003\u00fc~\u0000\u0423\u0428\u0003\u00fe\u007f\u0000\u0424\u0428"+
55077 		"\u0003\u0392\u01c9\u0000\u0425\u0428\u0003\u03ea\u01f5\u0000\u0426\u0428"+
55078 		"\u0003\u0142\u00a1\u0000\u0427\u03ec\u0001\u0000\u0000\u0000\u0427\u03ed"+
55079 		"\u0001\u0000\u0000\u0000\u0427\u03ee\u0001\u0000\u0000\u0000\u0427\u03ef"+
55080 		"\u0001\u0000\u0000\u0000\u0427\u03f0\u0001\u0000\u0000\u0000\u0427\u03f1"+
55081 		"\u0001\u0000\u0000\u0000\u0427\u03f2\u0001\u0000\u0000\u0000\u0427\u03f3"+
55082 		"\u0001\u0000\u0000\u0000\u0427\u03f4\u0001\u0000\u0000\u0000\u0427\u03f5"+
55083 		"\u0001\u0000\u0000\u0000\u0427\u03f6\u0001\u0000\u0000\u0000\u0427\u03f7"+
55084 		"\u0001\u0000\u0000\u0000\u0427\u03f8\u0001\u0000\u0000\u0000\u0427\u03f9"+
55085 		"\u0001\u0000\u0000\u0000\u0427\u03fa\u0001\u0000\u0000\u0000\u0427\u03fb"+
55086 		"\u0001\u0000\u0000\u0000\u0427\u03fc\u0001\u0000\u0000\u0000\u0427\u03fd"+
55087 		"\u0001\u0000\u0000\u0000\u0427\u03fe\u0001\u0000\u0000\u0000\u0427\u03ff"+
55088 		"\u0001\u0000\u0000\u0000\u0427\u0400\u0001\u0000\u0000\u0000\u0427\u0401"+
55089 		"\u0001\u0000\u0000\u0000\u0427\u0402\u0001\u0000\u0000\u0000\u0427\u0403"+
55090 		"\u0001\u0000\u0000\u0000\u0427\u0404\u0001\u0000\u0000\u0000\u0427\u0405"+
55091 		"\u0001\u0000\u0000\u0000\u0427\u0406\u0001\u0000\u0000\u0000\u0427\u0407"+
55092 		"\u0001\u0000\u0000\u0000\u0427\u0408\u0001\u0000\u0000\u0000\u0427\u0409"+
55093 		"\u0001\u0000\u0000\u0000\u0427\u040a\u0001\u0000\u0000\u0000\u0427\u040b"+
55094 		"\u0001\u0000\u0000\u0000\u0427\u040c\u0001\u0000\u0000\u0000\u0427\u040d"+
55095 		"\u0001\u0000\u0000\u0000\u0427\u040e\u0001\u0000\u0000\u0000\u0427\u040f"+
55096 		"\u0001\u0000\u0000\u0000\u0427\u0410\u0001\u0000\u0000\u0000\u0427\u0411"+
55097 		"\u0001\u0000\u0000\u0000\u0427\u0412\u0001\u0000\u0000\u0000\u0427\u0413"+
55098 		"\u0001\u0000\u0000\u0000\u0427\u0414\u0001\u0000\u0000\u0000\u0427\u0415"+
55099 		"\u0001\u0000\u0000\u0000\u0427\u0416\u0001\u0000\u0000\u0000\u0427\u0417"+
55100 		"\u0001\u0000\u0000\u0000\u0427\u0418\u0001\u0000\u0000\u0000\u0427\u0419"+
55101 		"\u0001\u0000\u0000\u0000\u0427\u041a\u0001\u0000\u0000\u0000\u0427\u041b"+
55102 		"\u0001\u0000\u0000\u0000\u0427\u041c\u0001\u0000\u0000\u0000\u0427\u041d"+
55103 		"\u0001\u0000\u0000\u0000\u0427\u041e\u0001\u0000\u0000\u0000\u0427\u041f"+
55104 		"\u0001\u0000\u0000\u0000\u0427\u0420\u0001\u0000\u0000\u0000\u0427\u0421"+
55105 		"\u0001\u0000\u0000\u0000\u0427\u0422\u0001\u0000\u0000\u0000\u0427\u0423"+
55106 		"\u0001\u0000\u0000\u0000\u0427\u0424\u0001\u0000\u0000\u0000\u0427\u0425"+
55107 		"\u0001\u0000\u0000\u0000\u0427\u0426\u0001\u0000\u0000\u0000\u0428\u042a"+
55108 		"\u0001\u0000\u0000\u0000\u0429\u042b\u0005+\u0000\u0000\u042a\u0429\u0001"+
55109 		"\u0000\u0000\u0000\u042a\u042b\u0001\u0000\u0000\u0000\u042b\u0001\u0001"+
55110 		"\u0000\u0000\u0000\u042c\u042d\u0005:\u0000\u0000\u042d\u042e\u0005\u0107"+
55111 		"\u0000\u0000\u042e\u042f\u0005\u021a\u0000\u0000\u042f\u0430\u0005\u0219"+
55112 		"\u0000\u0000\u0430\u0431\u0003\u0004\u0002\u0000\u0431\u0003\u0001\u0000"+
55113 		"\u0000\u0000\u0432\u0433\u0005\u021d\u0000\u0000\u0433\u043b\u0005\u02a6"+
55114 		"\u0000\u0000\u0434\u0435\u0005\u021d\u0000\u0000\u0435\u043b\u0005\u02a7"+
55115 		"\u0000\u0000\u0436\u0437\u0005\u021c\u0000\u0000\u0437\u043b\u0005\u021d"+
55116 		"\u0000\u0000\u0438\u043b\u0005\u021b\u0000\u0000\u0439\u043b\u0005\u021e"+
55117 		"\u0000\u0000\u043a\u0432\u0001\u0000\u0000\u0000\u043a\u0434\u0001\u0000"+
55118 		"\u0000\u0000\u043a\u0436\u0001\u0000\u0000\u0000\u043a\u0438\u0001\u0000"+
55119 		"\u0000\u0000\u043a\u0439\u0001\u0000\u0000\u0000\u043b\u0005\u0001\u0000"+
55120 		"\u0000\u0000\u043c\u043d\u0005:\u0000\u0000\u043d\u043e\u0005\u01ac\u0000"+
55121 		"\u0000\u043e\u043f\u0003\b\u0004\u0000\u043f\u0007\u0001\u0000\u0000\u0000"+
55122 		"\u0440\u0441\u0007\u0000\u0000\u0000\u0441\t\u0001\u0000\u0000\u0000\u0442"+
55123 		"\u0443\u0005}\u0000\u0000\u0443\u0450\u0007\u0001\u0000\u0000\u0444\u0447"+
55124 		"\u0003\u00eew\u0000\u0445\u0447\u0003\u00f0x\u0000\u0446\u0444\u0001\u0000"+
55125 		"\u0000\u0000\u0446\u0445\u0001\u0000\u0000\u0000\u0447\u044e\u0001\u0000"+
55126 		"\u0000\u0000\u0448\u0449\u0005M\u0000\u0000\u0449\u044c\u0005\u0232\u0000"+
55127 		"\u0000\u044a\u044d\u0003\u001c\u000e\u0000\u044b\u044d\u0005\u02da\u0000"+
55128 		"\u0000\u044c\u044a\u0001\u0000\u0000\u0000\u044c\u044b\u0001\u0000\u0000"+
55129 		"\u0000\u044c\u044d\u0001\u0000\u0000\u0000\u044d\u044f\u0001\u0000\u0000"+
55130 		"\u0000\u044e\u0448\u0001\u0000\u0000\u0000\u044e\u044f\u0001\u0000\u0000"+
55131 		"\u0000\u044f\u0451\u0001\u0000\u0000\u0000\u0450\u0446\u0001\u0000\u0000"+
55132 		"\u0000\u0450\u0451\u0001\u0000\u0000\u0000\u0451\u000b\u0001\u0000\u0000"+
55133 		"\u0000\u0452\u0453\u0005}\u0000\u0000\u0453\u0454\u0005\u0231\u0000\u0000"+
55134 		"\u0454\u0457\u0007\u0001\u0000\u0000\u0455\u0458\u0003\u00eew\u0000\u0456"+
55135 		"\u0458\u0003\u00f0x\u0000\u0457\u0455\u0001\u0000\u0000\u0000\u0457\u0456"+
55136 		"\u0001\u0000\u0000\u0000\u0457\u0458\u0001\u0000\u0000\u0000\u0458\r\u0001"+
55137 		"\u0000\u0000\u0000\u0459\u045f\u0005~\u0000\u0000\u045a\u045d\u0007\u0001"+
55138 		"\u0000\u0000\u045b\u045e\u0003\u00eew\u0000\u045c\u045e\u0003\u00f0x\u0000"+
55139 		"\u045d\u045b\u0001\u0000\u0000\u0000\u045d\u045c\u0001\u0000\u0000\u0000"+
55140 		"\u045d\u045e\u0001\u0000\u0000\u0000\u045e\u0460\u0001\u0000\u0000\u0000"+
55141 		"\u045f\u045a\u0001\u0000\u0000\u0000\u045f\u0460\u0001\u0000\u0000\u0000"+
55142 		"\u0460\u0467\u0001\u0000\u0000\u0000\u0461\u0462\u0005M\u0000\u0000\u0462"+
55143 		"\u0463\u0005\u001f\u0000\u0000\u0463\u0464\u0005\u0299\u0000\u0000\u0464"+
55144 		"\u0465\u0005\u0018\u0000\u0000\u0465\u0466\u0007\u0000\u0000\u0000\u0466"+
55145 		"\u0468\u0005 \u0000\u0000\u0467\u0461\u0001\u0000\u0000\u0000\u0467\u0468"+
55146 		"\u0001\u0000\u0000\u0000\u0468\u000f\u0001\u0000\u0000\u0000\u0469\u046b"+
55147 		"\u0005~\u0000\u0000\u046a\u046c\u0005\u0233\u0000\u0000\u046b\u046a\u0001"+
55148 		"\u0000\u0000\u0000\u046b\u046c\u0001\u0000\u0000\u0000\u046c\u0011\u0001"+
55149 		"\u0000\u0000\u0000\u046d\u046e\u0005\u007f\u0000\u0000\u046e\u0473\u0007"+
55150 		"\u0001\u0000\u0000\u046f\u0474\u0003\u00eew\u0000\u0470\u0474\u0003\u00f0"+
55151 		"x\u0000\u0471\u0474\u0003\u00f2y\u0000\u0472\u0474\u0003\u00f4z\u0000"+
55152 		"\u0473\u046f\u0001\u0000\u0000\u0000\u0473\u0470\u0001\u0000\u0000\u0000"+
55153 		"\u0473\u0471\u0001\u0000\u0000\u0000\u0473\u0472\u0001\u0000\u0000\u0000"+
55154 		"\u0473\u0474\u0001\u0000\u0000\u0000\u0474\u0013\u0001\u0000\u0000\u0000"+
55155 		"\u0475\u0477\u0005\u007f\u0000\u0000\u0476\u0478\u0005\u0233\u0000\u0000"+
55156 		"\u0477\u0476\u0001\u0000\u0000\u0000\u0477\u0478\u0001\u0000\u0000\u0000"+
55157 		"\u0478\u0015\u0001\u0000\u0000\u0000\u0479\u047a\u0005\u013e\u0000\u0000"+
55158 		"\u047a\u047d\u0007\u0001\u0000\u0000\u047b\u047e\u0003\u00f2y\u0000\u047c"+
55159 		"\u047e\u0003\u00f4z\u0000\u047d\u047b\u0001\u0000\u0000\u0000\u047d\u047c"+
55160 		"\u0001\u0000\u0000\u0000\u047e\u0017\u0001\u0000\u0000\u0000\u047f\u0480"+
55161 		"\u0005)\u0000\u0000\u0480\u0019\u0001\u0000\u0000\u0000\u0481\u0489\u0003"+
55162 		"\u001c\u000e\u0000\u0482\u0489\u0003\u001e\u000f\u0000\u0483\u0489\u0003"+
55163 		" \u0010\u0000\u0484\u0489\u0003\"\u0011\u0000\u0485\u0489\u0003$\u0012"+
55164 		"\u0000\u0486\u0489\u0003&\u0013\u0000\u0487\u0489\u0003(\u0014\u0000\u0488"+
55165 		"\u0481\u0001\u0000\u0000\u0000\u0488\u0482\u0001\u0000\u0000\u0000\u0488"+
55166 		"\u0483\u0001\u0000\u0000\u0000\u0488\u0484\u0001\u0000\u0000\u0000\u0488"+
55167 		"\u0485\u0001\u0000\u0000\u0000\u0488\u0486\u0001\u0000\u0000\u0000\u0488"+
55168 		"\u0487\u0001\u0000\u0000\u0000\u0489\u001b\u0001\u0000\u0000\u0000\u048a"+
55169 		"\u048b\u0007\u0002\u0000\u0000\u048b\u001d\u0001\u0000\u0000\u0000\u048c"+
55170 		"\u048e\u0007\u0003\u0000\u0000\u048d\u048c\u0001\u0000\u0000\u0000\u048d"+
55171 		"\u048e\u0001\u0000\u0000\u0000\u048e\u048f\u0001\u0000\u0000\u0000\u048f"+
55172 		"\u0490\u0005\u02d4\u0000\u0000\u0490\u001f\u0001\u0000\u0000\u0000\u0491"+
55173 		"\u0492\u0007\u0004\u0000\u0000\u0492\u0499\u0005\u02d3\u0000\u0000\u0493"+
55174 		"\u0494\u0005!\u0000\u0000\u0494\u0495\u0003*\u0015\u0000\u0495\u0496\u0005"+
55175 		"\u02d3\u0000\u0000\u0496\u0497\u0005\"\u0000\u0000\u0497\u0499\u0001\u0000"+
55176 		"\u0000\u0000\u0498\u0491\u0001\u0000\u0000\u0000\u0498\u0493\u0001\u0000"+
55177 		"\u0000\u0000\u0499!\u0001\u0000\u0000\u0000\u049a\u049b\u0005\u02d8\u0000"+
55178 		"\u0000\u049b#\u0001\u0000\u0000\u0000\u049c\u049d\u0005\u02d9\u0000\u0000"+
55179 		"\u049d%\u0001\u0000\u0000\u0000\u049e\u049f\u0007\u0005\u0000\u0000\u049f"+
55180 		"\'\u0001\u0000\u0000\u0000\u04a0\u04a1\u0005l\u0000\u0000\u04a1)\u0001"+
55181 		"\u0000\u0000\u0000\u04a2\u04a5\u0003,\u0016\u0000\u04a3\u04a5\u0003.\u0017"+
55182 		"\u0000\u04a4\u04a2\u0001\u0000\u0000\u0000\u04a4\u04a3\u0001\u0000\u0000"+
55183 		"\u0000\u04a5+\u0001\u0000\u0000\u0000\u04a6\u04a9\u0005\u02d1\u0000\u0000"+
55184 		"\u04a7\u04a9\u00030\u0018\u0000\u04a8\u04a6\u0001\u0000\u0000\u0000\u04a8"+
55185 		"\u04a7\u0001\u0000\u0000\u0000\u04a9-\u0001\u0000\u0000\u0000\u04aa\u04ab"+
55186 		"\u0005\u02d2\u0000\u0000\u04ab/\u0001\u0000\u0000\u0000\u04ac\u04ad\u0007"+
55187 		"\u0006\u0000\u0000\u04ad1\u0001\u0000\u0000\u0000\u04ae\u04af\u0003*\u0015"+
55188 		"\u0000\u04af3\u0001\u0000\u0000\u0000\u04b0\u04b1\u0003*\u0015\u0000\u04b1"+
55189 		"5\u0001\u0000\u0000\u0000\u04b2\u04b3\u0003L&\u0000\u04b3\u04b4\u0005"+
55190 		"\u0014\u0000\u0000\u04b4\u04b6\u0001\u0000\u0000\u0000\u04b5\u04b2\u0001"+
55191 		"\u0000\u0000\u0000\u04b5\u04b6\u0001\u0000\u0000\u0000\u04b6\u04b7\u0001"+
55192 		"\u0000\u0000\u0000\u04b7\u04b8\u0003N\'\u0000\u04b87\u0001\u0000\u0000"+
55193 		"\u0000\u04b9\u04ba\u0003L&\u0000\u04ba\u04bb\u0005\u0014\u0000\u0000\u04bb"+
55194 		"\u04bd\u0001\u0000\u0000\u0000\u04bc\u04b9\u0001\u0000\u0000\u0000\u04bc"+
55195 		"\u04bd\u0001\u0000\u0000\u0000\u04bd\u04be\u0001\u0000\u0000\u0000\u04be"+
55196 		"\u04c1\u0003N\'\u0000\u04bf\u04c0\u0005+\u0000\u0000\u04c0\u04c2\u0003"+
55197 		"\u001e\u000f\u0000\u04c1\u04bf\u0001\u0000\u0000\u0000\u04c1\u04c2\u0001"+
55198 		"\u0000\u0000\u0000\u04c29\u0001\u0000\u0000\u0000\u04c3\u04c4\u0003L&"+
55199 		"\u0000\u04c4\u04c5\u0005\u0014\u0000\u0000\u04c5\u04c7\u0001\u0000\u0000"+
55200 		"\u0000\u04c6\u04c3\u0001\u0000\u0000\u0000\u04c6\u04c7\u0001\u0000\u0000"+
55201 		"\u0000\u04c7\u04c8\u0001\u0000\u0000\u0000\u04c8\u04c9\u0003N\'\u0000"+
55202 		"\u04c9;\u0001\u0000\u0000\u0000\u04ca\u04cb\u00034\u001a\u0000\u04cb\u04cc"+
55203 		"\u0005\u0014\u0000\u0000\u04cc\u04ce\u0001\u0000\u0000\u0000\u04cd\u04ca"+
55204 		"\u0001\u0000\u0000\u0000\u04cd\u04ce\u0001\u0000\u0000\u0000\u04ce\u04cf"+
55205 		"\u0001\u0000\u0000\u0000\u04cf\u04d0\u0003N\'\u0000\u04d0=\u0001\u0000"+
55206 		"\u0000\u0000\u04d1\u04d2\u00034\u001a\u0000\u04d2\u04d3\u0005\u0014\u0000"+
55207 		"\u0000\u04d3\u04d5\u0001\u0000\u0000\u0000\u04d4\u04d1\u0001\u0000\u0000"+
55208 		"\u0000\u04d4\u04d5\u0001\u0000\u0000\u0000\u04d5\u04d6\u0001\u0000\u0000"+
55209 		"\u0000\u04d6\u04d7\u0003N\'\u0000\u04d7?\u0001\u0000\u0000\u0000\u04d8"+
55210 		"\u04d9\u00032\u0019\u0000\u04d9\u04da\u0005\u0014\u0000\u0000\u04da\u04dc"+
55211 		"\u0001\u0000\u0000\u0000\u04db\u04d8\u0001\u0000\u0000\u0000\u04db\u04dc"+
55212 		"\u0001\u0000\u0000\u0000\u04dc\u04e1\u0001\u0000\u0000\u0000\u04dd\u04df"+
55213 		"\u0003L&\u0000\u04de\u04dd\u0001\u0000\u0000\u0000\u04de\u04df\u0001\u0000"+
55214 		"\u0000\u0000\u04df\u04e0\u0001\u0000\u0000\u0000\u04e0\u04e2\u0005\u0014"+
55215 		"\u0000\u0000\u04e1\u04de\u0001\u0000\u0000\u0000\u04e1\u04e2\u0001\u0000"+
55216 		"\u0000\u0000\u04e2\u04e3\u0001\u0000\u0000\u0000\u04e3\u04e4\u0003N\'"+
55217 		"\u0000\u04e4A\u0001\u0000\u0000\u0000\u04e5\u04e6\u00034\u001a\u0000\u04e6"+
55218 		"\u04e7\u0005\u0014\u0000\u0000\u04e7\u04e9\u0001\u0000\u0000\u0000\u04e8"+
55219 		"\u04e5\u0001\u0000\u0000\u0000\u04e8\u04e9\u0001\u0000\u0000\u0000\u04e9"+
55220 		"\u04ea\u0001\u0000\u0000\u0000\u04ea\u04eb\u0003N\'\u0000\u04ebC\u0001"+
55221 		"\u0000\u0000\u0000\u04ec\u04ed\u0003N\'\u0000\u04edE\u0001\u0000\u0000"+
55222 		"\u0000\u04ee\u04ef\u0003N\'\u0000\u04efG\u0001\u0000\u0000\u0000\u04f0"+
55223 		"\u04f1\u00032\u0019\u0000\u04f1\u04f2\u0005\u0014\u0000\u0000\u04f2\u04f4"+
55224 		"\u0001\u0000\u0000\u0000\u04f3\u04f0\u0001\u0000\u0000\u0000\u04f3\u04f4"+
55225 		"\u0001\u0000\u0000\u0000\u04f4\u04f5\u0001\u0000\u0000\u0000\u04f5\u04f6"+
55226 		"\u0003L&\u0000\u04f6\u04f7\u0005\u0014";
55227 	private static final String _serializedATNSegment1 =
55228 		"\u0000\u0000\u04f7\u04f9\u0001\u0000\u0000\u0000\u04f8\u04f3\u0001\u0000"+
55229 		"\u0000\u0000\u04f8\u04f9\u0001\u0000\u0000\u0000\u04f9\u04fc\u0001\u0000"+
55230 		"\u0000\u0000\u04fa\u04fd\u0003N\'\u0000\u04fb\u04fd\u0003J%\u0000\u04fc"+
55231 		"\u04fa\u0001\u0000\u0000\u0000\u04fc\u04fb\u0001\u0000\u0000\u0000\u04fd"+
55232 		"I\u0001\u0000\u0000\u0000\u04fe\u04ff\u0005,\u0000\u0000\u04ff\u0500\u0005"+
55233 		"\u001f\u0000\u0000\u0500\u0501\u0003N\'\u0000\u0501\u0502\u0005 \u0000"+
55234 		"\u0000\u0502K\u0001\u0000\u0000\u0000\u0503\u0504\u0003*\u0015\u0000\u0504"+
55235 		"M\u0001\u0000\u0000\u0000\u0505\u0506\u0003*\u0015\u0000\u0506O\u0001"+
55236 		"\u0000\u0000\u0000\u0507\u0508\u0005\u001f\u0000\u0000\u0508\u050d\u0003"+
55237 		"H$\u0000\u0509\u050a\u0005%\u0000\u0000\u050a\u050c\u0003H$\u0000\u050b"+
55238 		"\u0509\u0001\u0000\u0000\u0000\u050c\u050f\u0001\u0000\u0000\u0000\u050d"+
55239 		"\u050b\u0001\u0000\u0000\u0000\u050d\u050e\u0001\u0000\u0000\u0000\u050e"+
55240 		"\u0510\u0001\u0000\u0000\u0000\u050f\u050d\u0001\u0000\u0000\u0000\u0510"+
55241 		"\u0511\u0005 \u0000\u0000\u0511Q\u0001\u0000\u0000\u0000\u0512\u0513\u0005"+
55242 		"\u001f\u0000\u0000\u0513\u0518\u0003\u00cae\u0000\u0514\u0515\u0005%\u0000"+
55243 		"\u0000\u0515\u0517\u0003\u00cae\u0000\u0516\u0514\u0001\u0000\u0000\u0000"+
55244 		"\u0517\u051a\u0001\u0000\u0000\u0000\u0518\u0516\u0001\u0000\u0000\u0000"+
55245 		"\u0518\u0519\u0001\u0000\u0000\u0000\u0519\u051b\u0001\u0000\u0000\u0000"+
55246 		"\u051a\u0518\u0001\u0000\u0000\u0000\u051b\u051c\u0005 \u0000\u0000\u051c"+
55247 		"S\u0001\u0000\u0000\u0000\u051d\u051f\u0005\u001f\u0000\u0000\u051e\u051d"+
55248 		"\u0001\u0000\u0000\u0000\u051e\u051f\u0001\u0000\u0000\u0000\u051f\u0520"+
55249 		"\u0001\u0000\u0000\u0000\u0520\u0525\u0003@ \u0000\u0521\u0522\u0005%"+
55250 		"\u0000\u0000\u0522\u0524\u0003@ \u0000\u0523\u0521\u0001\u0000\u0000\u0000"+
55251 		"\u0524\u0527\u0001\u0000\u0000\u0000\u0525\u0523\u0001\u0000\u0000\u0000"+
55252 		"\u0525\u0526\u0001\u0000\u0000\u0000\u0526\u0529\u0001\u0000\u0000\u0000"+
55253 		"\u0527\u0525\u0001\u0000\u0000\u0000\u0528\u052a\u0005 \u0000\u0000\u0529"+
55254 		"\u0528\u0001\u0000\u0000\u0000\u0529\u052a\u0001\u0000\u0000\u0000\u052a"+
55255 		"U\u0001\u0000\u0000\u0000\u052b\u052c\u0003*\u0015\u0000\u052cW\u0001"+
55256 		"\u0000\u0000\u0000\u052d\u052e\u0003*\u0015\u0000\u052eY\u0001\u0000\u0000"+
55257 		"\u0000\u052f\u0530\u0007\u0007\u0000\u0000\u0530[\u0001\u0000\u0000\u0000"+
55258 		"\u0531\u0535\u0003*\u0015\u0000\u0532\u0535\u0005\u02d3\u0000\u0000\u0533"+
55259 		"\u0535\u0005\u02da\u0000\u0000\u0534\u0531\u0001\u0000\u0000\u0000\u0534"+
55260 		"\u0532\u0001\u0000\u0000\u0000\u0534\u0533\u0001\u0000\u0000\u0000\u0535"+
55261 		"]\u0001\u0000\u0000\u0000\u0536\u053c\u0005\u001f\u0000\u0000\u0537\u053a"+
55262 		"\u0005\u02d4\u0000\u0000\u0538\u0539\u0005%\u0000\u0000\u0539\u053b\u0005"+
55263 		"\u02d4\u0000\u0000\u053a\u0538\u0001\u0000\u0000\u0000\u053a\u053b\u0001"+
55264 		"\u0000\u0000\u0000\u053b\u053d\u0001\u0000\u0000\u0000\u053c\u0537\u0001"+
55265 		"\u0000\u0000\u0000\u053c\u053d\u0001\u0000\u0000\u0000\u053d\u053e\u0001"+
55266 		"\u0000\u0000\u0000\u053e\u053f\u0005 \u0000\u0000\u053f_\u0001\u0000\u0000"+
55267 		"\u0000\u0540\u0542\u0005@\u0000\u0000\u0541\u0540\u0001\u0000\u0000\u0000"+
55268 		"\u0541\u0542\u0001\u0000\u0000\u0000\u0542\u0543\u0001\u0000\u0000\u0000"+
55269 		"\u0543\u0544\u0005C\u0000\u0000\u0544a\u0001\u0000\u0000\u0000\u0545\u0546"+
55270 		"\u00061\uffff\uffff\u0000\u0546\u054f\u0003l6\u0000\u0547\u0548\u0003"+
55271 		"j5\u0000\u0548\u0549\u0003b1\u0002\u0549\u054f\u0001\u0000\u0000\u0000"+
55272 		"\u054a\u054b\u0005\u001f\u0000\u0000\u054b\u054c\u0003b1\u0000\u054c\u054d"+
55273 		"\u0005 \u0000\u0000\u054d\u054f\u0001\u0000\u0000\u0000\u054e\u0545\u0001"+
55274 		"\u0000\u0000\u0000\u054e\u0547\u0001\u0000\u0000\u0000\u054e\u054a\u0001"+
55275 		"\u0000\u0000\u0000\u054f\u055e\u0001\u0000\u0000\u0000\u0550\u0551\n\u0005"+
55276 		"\u0000\u0000\u0551\u0552\u0003d2\u0000\u0552\u0553\u0003b1\u0006\u0553"+
55277 		"\u055d\u0001\u0000\u0000\u0000\u0554\u0555\n\u0004\u0000\u0000\u0555\u0556"+
55278 		"\u0003f3\u0000\u0556\u0557\u0003b1\u0005\u0557\u055d\u0001\u0000\u0000"+
55279 		"\u0000\u0558\u0559\n\u0003\u0000\u0000\u0559\u055a\u0003h4\u0000\u055a"+
55280 		"\u055b\u0003b1\u0004\u055b\u055d\u0001\u0000\u0000\u0000\u055c\u0550\u0001"+
55281 		"\u0000\u0000\u0000\u055c\u0554\u0001\u0000\u0000\u0000\u055c\u0558\u0001"+
55282 		"\u0000\u0000\u0000\u055d\u0560\u0001\u0000\u0000\u0000\u055e\u055c\u0001"+
55283 		"\u0000\u0000\u0000\u055e\u055f\u0001\u0000\u0000\u0000\u055fc\u0001\u0000"+
55284 		"\u0000\u0000\u0560\u055e\u0001\u0000\u0000\u0000\u0561\u0562\u0007\b\u0000"+
55285 		"\u0000\u0562e\u0001\u0000\u0000\u0000\u0563\u0564\u0007\t\u0000\u0000"+
55286 		"\u0564g\u0001\u0000\u0000\u0000\u0565\u0567\u0005j\u0000\u0000\u0566\u0568"+
55287 		"\u0005k\u0000\u0000\u0567\u0566\u0001\u0000\u0000\u0000\u0567\u0568\u0001"+
55288 		"\u0000\u0000\u0000\u0568\u0569\u0001\u0000\u0000\u0000\u0569\u056a\u0005"+
55289 		"O\u0000\u0000\u056a\u056b\u0005U\u0000\u0000\u056bi\u0001\u0000\u0000"+
55290 		"\u0000\u056c\u056d\u0007\n\u0000\u0000\u056dk\u0001\u0000\u0000\u0000"+
55291 		"\u056e\u056f\u00066\uffff\uffff\u0000\u056f\u0570\u0003p8\u0000\u0570"+
55292 		"\u0585\u0001\u0000\u0000\u0000\u0571\u0572\n\u0005\u0000\u0000\u0572\u0574"+
55293 		"\u0005j\u0000\u0000\u0573\u0575\u0005k\u0000\u0000\u0574\u0573\u0001\u0000"+
55294 		"\u0000\u0000\u0574\u0575\u0001\u0000\u0000\u0000\u0575\u0576\u0001\u0000"+
55295 		"\u0000\u0000\u0576\u0584\u0007\u000b\u0000\u0000\u0577\u0578\n\u0004\u0000"+
55296 		"\u0000\u0578\u0579\u0005\u0016\u0000\u0000\u0579\u0584\u0003p8\u0000\u057a"+
55297 		"\u057b\n\u0003\u0000\u0000\u057b\u057c\u0003n7\u0000\u057c\u057d\u0003"+
55298 		"p8\u0000\u057d\u0584\u0001\u0000\u0000\u0000\u057e\u057f\n\u0002\u0000"+
55299 		"\u0000\u057f\u0580\u0003n7\u0000\u0580\u0581\u0007\f\u0000\u0000\u0581"+
55300 		"\u0582\u0003\u0304\u0182\u0000\u0582\u0584\u0001\u0000\u0000\u0000\u0583"+
55301 		"\u0571\u0001\u0000\u0000\u0000\u0583\u0577\u0001\u0000\u0000\u0000\u0583"+
55302 		"\u057a\u0001\u0000\u0000\u0000\u0583\u057e\u0001\u0000\u0000\u0000\u0584"+
55303 		"\u0587\u0001\u0000\u0000\u0000\u0585\u0583\u0001\u0000\u0000\u0000\u0585"+
55304 		"\u0586\u0001\u0000\u0000\u0000\u0586m\u0001\u0000\u0000\u0000\u0587\u0585"+
55305 		"\u0001\u0000\u0000\u0000\u0588\u0589\u0007\r\u0000\u0000\u0589o\u0001"+
55306 		"\u0000\u0000\u0000\u058a\u058c\u0003r9\u0000\u058b\u058d\u0005k\u0000"+
55307 		"\u0000\u058c\u058b\u0001\u0000\u0000\u0000\u058c\u058d\u0001\u0000\u0000"+
55308 		"\u0000\u058d\u058e\u0001\u0000\u0000\u0000\u058e\u058f\u0005q\u0000\u0000"+
55309 		"\u058f\u0590\u0003\u0304\u0182\u0000\u0590\u05b6\u0001\u0000\u0000\u0000"+
55310 		"\u0591\u0593\u0003r9\u0000\u0592\u0594\u0005k\u0000\u0000\u0593\u0592"+
55311 		"\u0001\u0000\u0000\u0000\u0593\u0594\u0001\u0000\u0000\u0000\u0594\u0595"+
55312 		"\u0001\u0000\u0000\u0000\u0595\u0596\u0005q\u0000\u0000\u0596\u0597\u0005"+
55313 		"\u001f\u0000\u0000\u0597\u059c\u0003b1\u0000\u0598\u0599\u0005%\u0000"+
55314 		"\u0000\u0599\u059b\u0003b1\u0000\u059a\u0598\u0001\u0000\u0000\u0000\u059b"+
55315 		"\u059e\u0001\u0000\u0000\u0000\u059c\u059a\u0001\u0000\u0000\u0000\u059c"+
55316 		"\u059d\u0001\u0000\u0000\u0000\u059d\u059f\u0001\u0000\u0000\u0000\u059e"+
55317 		"\u059c\u0001\u0000\u0000\u0000\u059f\u05a0\u0005 \u0000\u0000\u05a0\u05b6"+
55318 		"\u0001\u0000\u0000\u0000\u05a1\u05a3\u0003r9\u0000\u05a2\u05a4\u0005k"+
55319 		"\u0000\u0000\u05a3\u05a2\u0001\u0000\u0000\u0000\u05a3\u05a4\u0001\u0000"+
55320 		"\u0000\u0000\u05a4\u05a5\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005p\u0000"+
55321 		"\u0000\u05a6\u05a7\u0003r9\u0000\u05a7\u05a8\u0005h\u0000\u0000\u05a8"+
55322 		"\u05a9\u0003p8\u0000\u05a9\u05b6\u0001\u0000\u0000\u0000\u05aa\u05ac\u0003"+
55323 		"r9\u0000\u05ab\u05ad\u0005k\u0000\u0000\u05ac\u05ab\u0001\u0000\u0000"+
55324 		"\u0000\u05ac\u05ad\u0001\u0000\u0000\u0000\u05ad\u05ae\u0001\u0000\u0000"+
55325 		"\u0000\u05ae\u05af\u0005t\u0000\u0000\u05af\u05b2\u0003t:\u0000\u05b0"+
55326 		"\u05b1\u0005\u00f2\u0000\u0000\u05b1\u05b3\u0003t:\u0000\u05b2\u05b0\u0001"+
55327 		"\u0000\u0000\u0000\u05b2\u05b3\u0001\u0000\u0000\u0000\u05b3\u05b6\u0001"+
55328 		"\u0000\u0000\u0000\u05b4\u05b6\u0003r9\u0000\u05b5\u058a\u0001\u0000\u0000"+
55329 		"\u0000\u05b5\u0591\u0001\u0000\u0000\u0000\u05b5\u05a1\u0001\u0000\u0000"+
55330 		"\u0000\u05b5\u05aa\u0001\u0000\u0000\u0000\u05b5\u05b4\u0001\u0000\u0000"+
55331 		"\u0000\u05b6q\u0001\u0000\u0000\u0000\u05b7\u05b8\u00069\uffff\uffff\u0000"+
55332 		"\u05b8\u05b9\u0003t:\u0000\u05b9\u05da\u0001\u0000\u0000\u0000\u05ba\u05bb"+
55333 		"\n\u000b\u0000\u0000\u05bb\u05bc\u0005\b\u0000\u0000\u05bc\u05d9\u0003"+
55334 		"r9\f\u05bd\u05be\n\n\u0000\u0000\u05be\u05bf\u0005\t\u0000\u0000\u05bf"+
55335 		"\u05d9\u0003r9\u000b\u05c0\u05c1\n\t\u0000\u0000\u05c1\u05c2\u0005\n\u0000"+
55336 		"\u0000\u05c2\u05d9\u0003r9\n\u05c3\u05c4\n\b\u0000\u0000\u05c4\u05c5\u0005"+
55337 		"\u000b\u0000\u0000\u05c5\u05d9\u0003r9\t\u05c6\u05c7\n\u0007\u0000\u0000"+
55338 		"\u05c7\u05c8\u0005\u000f\u0000\u0000\u05c8\u05d9\u0003r9\b\u05c9\u05ca"+
55339 		"\n\u0006\u0000\u0000\u05ca\u05cb\u0005\u0010\u0000\u0000\u05cb\u05d9\u0003"+
55340 		"r9\u0007\u05cc\u05cd\n\u0005\u0000\u0000\u05cd\u05ce\u0005\u0011\u0000"+
55341 		"\u0000\u05ce\u05d9\u0003r9\u0006\u05cf\u05d0\n\u0004\u0000\u0000\u05d0"+
55342 		"\u05d1\u0005\u0012\u0000\u0000\u05d1\u05d9\u0003r9\u0005\u05d2\u05d3\n"+
55343 		"\u0003\u0000\u0000\u05d3\u05d4\u0005\r\u0000\u0000\u05d4\u05d9\u0003r"+
55344 		"9\u0004\u05d5\u05d6\n\u0002\u0000\u0000\u05d6\u05d7\u0005\f\u0000\u0000"+
55345 		"\u05d7\u05d9\u0003r9\u0003\u05d8\u05ba\u0001\u0000\u0000\u0000\u05d8\u05bd"+
55346 		"\u0001\u0000\u0000\u0000\u05d8\u05c0\u0001\u0000\u0000\u0000\u05d8\u05c3"+
55347 		"\u0001\u0000\u0000\u0000\u05d8\u05c6\u0001\u0000\u0000\u0000\u05d8\u05c9"+
55348 		"\u0001\u0000\u0000\u0000\u05d8\u05cc\u0001\u0000\u0000\u0000\u05d8\u05cf"+
55349 		"\u0001\u0000\u0000\u0000\u05d8\u05d2\u0001\u0000\u0000\u0000\u05d8\u05d5"+
55350 		"\u0001\u0000\u0000\u0000\u05d9\u05dc\u0001\u0000\u0000\u0000\u05da\u05d8"+
55351 		"\u0001\u0000\u0000\u0000\u05da\u05db\u0001\u0000\u0000\u0000\u05dbs\u0001"+
55352 		"\u0000\u0000\u0000\u05dc\u05da\u0001\u0000\u0000\u0000\u05dd\u05de\u0006"+
55353 		":\uffff\uffff\u0000\u05de\u05ff\u0003v;\u0000\u05df\u05ff\u0003\u0018"+
55354 		"\f\u0000\u05e0\u05ff\u0003\u001a\r\u0000\u05e1\u05ff\u0003H$\u0000\u05e2"+
55355 		"\u05ff\u0003\u00eau\u0000\u05e3\u05e4\u0007\u000e\u0000\u0000\u05e4\u05ff"+
55356 		"\u0003t:\u0006\u05e5\u05e7\u0005\u00f8\u0000\u0000\u05e6\u05e5\u0001\u0000"+
55357 		"\u0000\u0000\u05e6\u05e7\u0001\u0000\u0000\u0000\u05e7\u05e8\u0001\u0000"+
55358 		"\u0000\u0000\u05e8\u05e9\u0005\u001f\u0000\u0000\u05e9\u05ee\u0003b1\u0000"+
55359 		"\u05ea\u05eb\u0005%\u0000\u0000\u05eb\u05ed\u0003b1\u0000\u05ec\u05ea"+
55360 		"\u0001\u0000\u0000\u0000\u05ed\u05f0\u0001\u0000\u0000\u0000\u05ee\u05ec"+
55361 		"\u0001\u0000\u0000\u0000\u05ee\u05ef\u0001\u0000\u0000\u0000\u05ef\u05f1"+
55362 		"\u0001\u0000\u0000\u0000\u05f0\u05ee\u0001\u0000\u0000\u0000\u05f1\u05f2"+
55363 		"\u0005 \u0000\u0000\u05f2\u05ff\u0001\u0000\u0000\u0000\u05f3\u05f5\u0005"+
55364 		"o\u0000\u0000\u05f4\u05f3\u0001\u0000\u0000\u0000\u05f4\u05f5\u0001\u0000"+
55365 		"\u0000\u0000\u05f5\u05f6\u0001\u0000\u0000\u0000\u05f6\u05ff\u0003\u0304"+
55366 		"\u0182\u0000\u05f7\u05f8\u0005!\u0000\u0000\u05f8\u05f9\u0003*\u0015\u0000"+
55367 		"\u05f9\u05fa\u0003b1\u0000\u05fa\u05fb\u0005\"\u0000\u0000\u05fb\u05ff"+
55368 		"\u0001\u0000\u0000\u0000\u05fc\u05ff\u0003\u00a0P\u0000\u05fd\u05ff\u0003"+
55369 		"\u00a6S\u0000\u05fe\u05dd\u0001\u0000\u0000\u0000\u05fe\u05df\u0001\u0000"+
55370 		"\u0000\u0000\u05fe\u05e0\u0001\u0000\u0000\u0000\u05fe\u05e1\u0001\u0000"+
55371 		"\u0000\u0000\u05fe\u05e2\u0001\u0000\u0000\u0000\u05fe\u05e3\u0001\u0000"+
55372 		"\u0000\u0000\u05fe\u05e6\u0001\u0000\u0000\u0000\u05fe\u05f4\u0001\u0000"+
55373 		"\u0000\u0000\u05fe\u05f7\u0001\u0000\u0000\u0000\u05fe\u05fc\u0001\u0000"+
55374 		"\u0000\u0000\u05fe\u05fd\u0001\u0000\u0000\u0000\u05ff\u0605\u0001\u0000"+
55375 		"\u0000\u0000\u0600\u0601\n\u0007\u0000\u0000\u0601\u0602\u0005\u0005\u0000"+
55376 		"\u0000\u0602\u0604\u0003t:\b\u0603\u0600\u0001\u0000\u0000\u0000\u0604"+
55377 		"\u0607\u0001\u0000\u0000\u0000\u0605\u0603\u0001\u0000\u0000\u0000\u0605"+
55378 		"\u0606\u0001\u0000\u0000\u0000\u0606u\u0001\u0000\u0000\u0000\u0607\u0605"+
55379 		"\u0001\u0000\u0000\u0000\u0608\u060c\u0003x<\u0000\u0609\u060c\u0003~"+
55380 		"?\u0000\u060a\u060c\u0003\u009cN\u0000\u060b\u0608\u0001\u0000\u0000\u0000"+
55381 		"\u060b\u0609\u0001\u0000\u0000\u0000\u060b\u060a\u0001\u0000\u0000\u0000"+
55382 		"\u060cw\u0001\u0000\u0000\u0000\u060d\u060e\u0003z=\u0000\u060e\u0610"+
55383 		"\u0005\u001f\u0000\u0000\u060f\u0611\u0003|>\u0000\u0610\u060f\u0001\u0000"+
55384 		"\u0000\u0000\u0610\u0611\u0001\u0000\u0000\u0000\u0611\u061b\u0001\u0000"+
55385 		"\u0000\u0000\u0612\u0617\u0003b1\u0000\u0613\u0614\u0005%\u0000\u0000"+
55386 		"\u0614\u0616\u0003b1\u0000\u0615\u0613\u0001\u0000\u0000\u0000\u0616\u0619"+
55387 		"\u0001\u0000\u0000\u0000\u0617\u0615\u0001\u0000\u0000\u0000\u0617\u0618"+
55388 		"\u0001\u0000\u0000\u0000\u0618\u061c\u0001\u0000\u0000\u0000\u0619\u0617"+
55389 		"\u0001\u0000\u0000\u0000\u061a\u061c\u0005\u0011\u0000\u0000\u061b\u0612"+
55390 		"\u0001\u0000\u0000\u0000\u061b\u061a\u0001\u0000\u0000\u0000\u061b\u061c"+
55391 		"\u0001\u0000\u0000\u0000\u061c\u061d\u0001\u0000\u0000\u0000\u061d\u061e"+
55392 		"\u0005 \u0000\u0000\u061ey\u0001\u0000\u0000\u0000\u061f\u0620\u0007\u000f"+
55393 		"\u0000\u0000\u0620{\u0001\u0000\u0000\u0000\u0621\u0622\u0005O\u0000\u0000"+
55394 		"\u0622}\u0001\u0000\u0000\u0000\u0623\u062b\u0003\u0082A\u0000\u0624\u062b"+
55395 		"\u0003\u0092I\u0000\u0625\u062b\u0003\u0094J\u0000\u0626\u062b\u0003\u0088"+
55396 		"D\u0000\u0627\u062b\u0003\u009aM\u0000\u0628\u062b\u0003\u00b6[\u0000"+
55397 		"\u0629\u062b\u0003\u0080@\u0000\u062a\u0623\u0001\u0000\u0000\u0000\u062a"+
55398 		"\u0624\u0001\u0000\u0000\u0000\u062a\u0625\u0001\u0000\u0000\u0000\u062a"+
55399 		"\u0626\u0001\u0000\u0000\u0000\u062a\u0627\u0001\u0000\u0000\u0000\u062a"+
55400 		"\u0628\u0001\u0000\u0000\u0000\u062a\u0629\u0001\u0000\u0000\u0000\u062b"+
55401 		"\u007f\u0001\u0000\u0000\u0000\u062c\u062d\u0007\u0010\u0000\u0000\u062d"+
55402 		"\u062e\u0005\u001f\u0000\u0000\u062e\u062f\u0003b1\u0000\u062f\u0630\u0005"+
55403 		" \u0000\u0000\u0630\u0631\u0005\u00ef\u0000\u0000\u0631\u0632\u0005v\u0000"+
55404 		"\u0000\u0632\u0633\u0005\u001f\u0000\u0000\u0633\u0634\u0005u\u0000\u0000"+
55405 		"\u0634\u0635\u0005w\u0000\u0000\u0635\u0637\u0003b1\u0000\u0636\u0638"+
55406 		"\u0007\u0011\u0000\u0000\u0637\u0636\u0001\u0000\u0000\u0000\u0637\u0638"+
55407 		"\u0001\u0000\u0000\u0000\u0638\u0639\u0001\u0000\u0000\u0000\u0639\u063a"+
55408 		"\u0005 \u0000\u0000\u063a\u0081\u0001\u0000\u0000\u0000\u063b\u063e\u0003"+
55409 		"\u0084B\u0000\u063c\u063e\u0003\u0086C\u0000\u063d\u063b\u0001\u0000\u0000"+
55410 		"\u0000\u063d\u063c\u0001\u0000\u0000\u0000\u063e\u0083\u0001\u0000\u0000"+
55411 		"\u0000\u063f\u0640\u0007\u0012\u0000\u0000\u0640\u0641\u0005\u001f\u0000"+
55412 		"\u0000\u0641\u0642\u0003b1\u0000\u0642\u0643\u0005`\u0000\u0000\u0643"+
55413 		"\u0644\u0003\u00acV\u0000\u0644\u0645\u0005 \u0000\u0000\u0645\u0085\u0001"+
55414 		"\u0000\u0000\u0000\u0646\u0647\u0007\u0013\u0000\u0000\u0647\u0648\u0005"+
55415 		"\u001f\u0000\u0000\u0648\u0649\u0003\u00acV\u0000\u0649\u064a\u0005%\u0000"+
55416 		"\u0000\u064a\u064d\u0003b1\u0000\u064b\u064c\u0005%\u0000\u0000\u064c"+
55417 		"\u064e\u0005\u02d4\u0000\u0000\u064d\u064b\u0001\u0000\u0000\u0000\u064d"+
55418 		"\u064e\u0001\u0000\u0000\u0000\u064e\u064f\u0001\u0000\u0000\u0000\u064f"+
55419 		"\u0650\u0005 \u0000\u0000\u0650\u0087\u0001\u0000\u0000\u0000\u0651\u0654"+
55420 		"\u0003\u008aE\u0000\u0652\u0654\u0003\u008cF\u0000\u0653\u0651\u0001\u0000"+
55421 		"\u0000\u0000\u0653\u0652\u0001\u0000\u0000\u0000\u0654\u0089\u0001\u0000"+
55422 		"\u0000\u0000\u0655\u0656\u0005\u00e9\u0000\u0000\u0656\u0662\u0005\u001f"+
55423 		"\u0000\u0000\u0657\u065c\u0003\u008eG\u0000\u0658\u0659\u0005%\u0000\u0000"+
55424 		"\u0659\u065b\u0003\u008eG\u0000\u065a\u0658\u0001\u0000\u0000\u0000\u065b"+
55425 		"\u065e\u0001\u0000\u0000\u0000\u065c\u065a\u0001\u0000\u0000\u0000\u065c"+
55426 		"\u065d\u0001\u0000\u0000\u0000\u065d\u0660\u0001\u0000\u0000\u0000\u065e"+
55427 		"\u065c\u0001\u0000\u0000\u0000\u065f\u0661\u0003\u0090H\u0000\u0660\u065f"+
55428 		"\u0001\u0000\u0000\u0000\u0660\u0661\u0001\u0000\u0000\u0000\u0661\u0663"+
55429 		"\u0001\u0000\u0000\u0000\u0662\u0657\u0001\u0000\u0000\u0000\u0662\u0663"+
55430 		"\u0001\u0000\u0000\u0000\u0663\u0664\u0001\u0000\u0000\u0000\u0664\u0665"+
55431 		"\u0005 \u0000\u0000\u0665\u008b\u0001\u0000\u0000\u0000\u0666\u0667\u0005"+
55432 		"\u00ea\u0000\u0000\u0667\u0668\u0005\u001f\u0000\u0000\u0668\u066d\u0003"+
55433 		"b1\u0000\u0669\u066a\u0005%\u0000\u0000\u066a\u066c\u0003b1\u0000\u066b"+
55434 		"\u0669\u0001\u0000\u0000\u0000\u066c\u066f\u0001\u0000\u0000\u0000\u066d"+
55435 		"\u066b\u0001\u0000\u0000\u0000\u066d\u066e\u0001\u0000\u0000\u0000\u066e"+
55436 		"\u0671\u0001\u0000\u0000\u0000\u066f\u066d\u0001\u0000\u0000\u0000\u0670"+
55437 		"\u0672\u0003\u0090H\u0000\u0671\u0670\u0001\u0000\u0000\u0000\u0671\u0672"+
55438 		"\u0001\u0000\u0000\u0000\u0672\u0673\u0001\u0000\u0000\u0000\u0673\u0674"+
55439 		"\u0005 \u0000\u0000\u0674\u008d\u0001\u0000\u0000\u0000\u0675\u0676\u0003"+
55440 		"b1\u0000\u0676\u0677\u0005\u000e\u0000\u0000\u0677\u0678\u0003b1\u0000"+
55441 		"\u0678\u008f\u0001\u0000\u0000\u0000\u0679\u067a\u0005l\u0000\u0000\u067a"+
55442 		"\u067b\u0005a\u0000\u0000\u067b\u0680\u0005l\u0000\u0000\u067c\u067d\u0005"+
55443 		"\u02bd\u0000\u0000\u067d\u067e\u0005a\u0000\u0000\u067e\u0680\u0005l\u0000"+
55444 		"\u0000\u067f\u0679\u0001\u0000\u0000\u0000\u067f\u067c\u0001\u0000\u0000"+
55445 		"\u0000\u0680\u0091\u0001\u0000\u0000\u0000\u0681\u0682\u0005\u0083\u0000"+
55446 		"\u0000\u0682\u0683\u0005\u001f\u0000\u0000\u0683\u0688\u0003b1\u0000\u0684"+
55447 		"\u0685\u0005%\u0000\u0000\u0685\u0687\u0003b1\u0000\u0686\u0684\u0001"+
55448 		"\u0000\u0000\u0000\u0687\u068a\u0001\u0000\u0000\u0000\u0688\u0686\u0001"+
55449 		"\u0000\u0000\u0000\u0688\u0689\u0001\u0000\u0000\u0000\u0689\u068d\u0001"+
55450 		"\u0000\u0000\u0000\u068a\u0688\u0001\u0000\u0000\u0000\u068b\u068c\u0005"+
55451 		"^\u0000\u0000\u068c\u068e\u0003\u00e4r\u0000\u068d\u068b\u0001\u0000\u0000"+
55452 		"\u0000\u068d\u068e\u0001\u0000\u0000\u0000\u068e\u068f\u0001\u0000\u0000"+
55453 		"\u0000\u068f\u0690\u0005 \u0000\u0000\u0690\u0093\u0001\u0000\u0000\u0000"+
55454 		"\u0691\u0692\u0005\u02cd\u0000\u0000\u0692\u0693\u0005\u001f\u0000\u0000"+
55455 		"\u0693\u0696\u0003b1\u0000\u0694\u0695\u0005%\u0000\u0000\u0695\u0697"+
55456 		"\u0003b1\u0000\u0696\u0694\u0001\u0000\u0000\u0000\u0696\u0697\u0001\u0000"+
55457 		"\u0000\u0000\u0697\u0698\u0001\u0000\u0000\u0000\u0698\u069a\u0005 \u0000"+
55458 		"\u0000\u0699\u069b\u0003\u0096K\u0000\u069a\u0699\u0001\u0000\u0000\u0000"+
55459 		"\u069a\u069b\u0001\u0000\u0000\u0000\u069b\u0095\u0001\u0000\u0000\u0000"+
55460 		"\u069c\u069d\u0005M\u0000\u0000\u069d\u069e\u0005\u001f\u0000\u0000\u069e"+
55461 		"\u06a3\u0003\u0098L\u0000\u069f\u06a0\u0005%\u0000\u0000\u06a0\u06a2\u0003"+
55462 		"\u0098L\u0000\u06a1\u069f\u0001\u0000\u0000\u0000\u06a2\u06a5\u0001\u0000"+
55463 		"\u0000\u0000\u06a3\u06a1\u0001\u0000\u0000\u0000\u06a3\u06a4\u0001\u0000"+
55464 		"\u0000\u0000\u06a4\u06a6\u0001\u0000\u0000\u0000\u06a5\u06a3\u0001\u0000"+
55465 		"\u0000\u0000\u06a6\u06a7\u0005 \u0000\u0000\u06a7\u0097\u0001\u0000\u0000"+
55466 		"\u0000\u06a8\u06a9\u0003H$\u0000\u06a9\u06ab\u0003\u00acV\u0000\u06aa"+
55467 		"\u06ac\u0003b1\u0000\u06ab\u06aa\u0001\u0000\u0000\u0000\u06ab\u06ac\u0001"+
55468 		"\u0000\u0000\u0000\u06ac\u06af\u0001\u0000\u0000\u0000\u06ad\u06ae\u0005"+
55469 		"`\u0000\u0000\u06ae\u06b0\u0005\u02c2\u0000\u0000\u06af\u06ad\u0001\u0000"+
55470 		"\u0000\u0000\u06af\u06b0\u0001\u0000\u0000\u0000\u06b0\u0099\u0001\u0000"+
55471 		"\u0000\u0000\u06b1\u06b2\u0005\u02ce\u0000\u0000\u06b2\u06b3\u0005\u001f"+
55472 		"\u0000\u0000\u06b3\u06b4\u0003b1\u0000\u06b4\u06bc\u0005%\u0000\u0000"+
55473 		"\u06b5\u06b6\u0003b1\u0000\u06b6\u06b7\u0005+\u0000\u0000\u06b7\u06b8"+
55474 		"\u0003b1\u0000\u06b8\u06b9\u0005+\u0000\u0000\u06b9\u06ba\u0003b1\u0000"+
55475 		"\u06ba\u06bd\u0001\u0000\u0000\u0000\u06bb\u06bd\u0003b1\u0000\u06bc\u06b5"+
55476 		"\u0001\u0000\u0000\u0000\u06bc\u06bb\u0001\u0000\u0000\u0000\u06bd\u06be"+
55477 		"\u0001\u0000\u0000\u0000\u06be\u06c1\u0005%\u0000\u0000\u06bf\u06c2\u0003"+
55478 		"@ \u0000\u06c0\u06c2\u0003b1\u0000\u06c1\u06bf\u0001\u0000\u0000\u0000"+
55479 		"\u06c1\u06c0\u0001\u0000\u0000\u0000\u06c2\u06c3\u0001\u0000\u0000\u0000"+
55480 		"\u06c3\u06c4\u0005 \u0000\u0000\u06c4\u06d3\u0001\u0000\u0000\u0000\u06c5"+
55481 		"\u06c6\u0005\u02ce\u0000\u0000\u06c6\u06c7\u0005\u001f\u0000\u0000\u06c7"+
55482 		"\u06c8\u0005\u016b\u0000\u0000\u06c8\u06cd\u0003b1\u0000\u06c9\u06ca\u0005"+
55483 		"%\u0000\u0000\u06ca\u06cc\u0003b1\u0000\u06cb\u06c9\u0001\u0000\u0000"+
55484 		"\u0000\u06cc\u06cf\u0001\u0000\u0000\u0000\u06cd\u06cb\u0001\u0000\u0000"+
55485 		"\u0000\u06cd\u06ce\u0001\u0000\u0000\u0000\u06ce\u06d0\u0001\u0000\u0000"+
55486 		"\u0000\u06cf\u06cd\u0001\u0000\u0000\u0000\u06d0\u06d1\u0005 \u0000\u0000"+
55487 		"\u06d1\u06d3\u0001\u0000\u0000\u0000\u06d2\u06b1\u0001\u0000\u0000\u0000"+
55488 		"\u06d2\u06c5\u0001\u0000\u0000\u0000\u06d3\u009b\u0001\u0000\u0000\u0000"+
55489 		"\u06d4\u06d5\u0003\u009eO\u0000\u06d5\u06df\u0005\u001f\u0000\u0000\u06d6"+
55490 		"\u06db\u0003b1\u0000\u06d7\u06d8\u0005%\u0000\u0000\u06d8\u06da\u0003"+
55491 		"b1\u0000\u06d9\u06d7\u0001\u0000\u0000\u0000\u06da\u06dd\u0001\u0000\u0000"+
55492 		"\u0000\u06db\u06d9\u0001\u0000\u0000\u0000\u06db\u06dc\u0001\u0000\u0000"+
55493 		"\u0000\u06dc\u06e0\u0001\u0000\u0000\u0000\u06dd\u06db\u0001\u0000\u0000"+
55494 		"\u0000\u06de\u06e0\u0005\u0011\u0000\u0000\u06df\u06d6\u0001\u0000\u0000"+
55495 		"\u0000\u06df\u06de\u0001\u0000\u0000\u0000\u06df\u06e0\u0001\u0000\u0000"+
55496 		"\u0000\u06e0\u06e1\u0001\u0000\u0000\u0000\u06e1\u06e2\u0005 \u0000\u0000"+
55497 		"\u06e2\u009d\u0001\u0000\u0000\u0000\u06e3\u06e4\u0003L&\u0000\u06e4\u06e5"+
55498 		"\u0005\u0014\u0000\u0000\u06e5\u06e7\u0001\u0000\u0000\u0000\u06e6\u06e3"+
55499 		"\u0001\u0000\u0000\u0000\u06e6\u06e7\u0001\u0000\u0000\u0000\u06e7\u06e8"+
55500 		"\u0001\u0000\u0000\u0000\u06e8\u06ee\u0003*\u0015\u0000\u06e9\u06ee\u0005"+
55501 		"c\u0000\u0000\u06ea\u06ee\u0005\u008a\u0000\u0000\u06eb\u06ee\u0005\u008b"+
55502 		"\u0000\u0000\u06ec\u06ee\u0005\u0086\u0000\u0000\u06ed\u06e6\u0001\u0000"+
55503 		"\u0000\u0000\u06ed\u06e9\u0001\u0000\u0000\u0000\u06ed\u06ea\u0001\u0000"+
55504 		"\u0000\u0000\u06ed\u06eb\u0001\u0000\u0000\u0000\u06ed\u06ec\u0001\u0000"+
55505 		"\u0000\u0000\u06ee\u009f\u0001\u0000\u0000\u0000\u06ef\u06f1\u0005P\u0000"+
55506 		"\u0000\u06f0\u06f2\u0003t:\u0000\u06f1\u06f0\u0001\u0000\u0000\u0000\u06f1"+
55507 		"\u06f2\u0001\u0000\u0000\u0000\u06f2\u06f4\u0001\u0000\u0000\u0000\u06f3"+
55508 		"\u06f5\u0003\u00a2Q\u0000\u06f4\u06f3\u0001\u0000\u0000\u0000\u06f5\u06f6"+
55509 		"\u0001\u0000\u0000\u0000\u06f6\u06f4\u0001\u0000\u0000\u0000\u06f6\u06f7"+
55510 		"\u0001\u0000\u0000\u0000\u06f7\u06f9\u0001\u0000\u0000\u0000\u06f8\u06fa"+
55511 		"\u0003\u00a4R\u0000\u06f9\u06f8\u0001\u0000\u0000\u0000\u06f9\u06fa\u0001"+
55512 		"\u0000\u0000\u0000\u06fa\u06fb\u0001\u0000\u0000\u0000\u06fb\u06fc\u0005"+
55513 		"\u011d\u0000\u0000\u06fc\u00a1\u0001\u0000\u0000\u0000\u06fd\u06fe\u0005"+
55514 		"Q\u0000\u0000\u06fe\u06ff\u0003b1\u0000\u06ff\u0700\u0005e\u0000\u0000"+
55515 		"\u0700\u0701\u0003b1\u0000\u0701\u00a3\u0001\u0000\u0000\u0000\u0702\u0703"+
55516 		"\u0005d\u0000\u0000\u0703\u0704\u0003b1\u0000\u0704\u00a5\u0001\u0000"+
55517 		"\u0000\u0000\u0705\u070a\u0003\u00b6[\u0000\u0706\u070a\u0003\u00b0X\u0000"+
55518 		"\u0707\u070a\u0003\u00b2Y\u0000\u0708\u070a\u0003\u00b4Z\u0000\u0709\u0705"+
55519 		"\u0001\u0000\u0000\u0000\u0709\u0706\u0001\u0000\u0000\u0000\u0709\u0707"+
55520 		"\u0001\u0000\u0000\u0000\u0709\u0708\u0001\u0000\u0000\u0000\u070a\u00a7"+
55521 		"\u0001\u0000\u0000\u0000\u070b\u070c\u0005u\u0000\u0000\u070c\u070d\u0005"+
55522 		"w\u0000\u0000\u070d\u0712\u0003\u00aaU\u0000\u070e\u070f\u0005%\u0000"+
55523 		"\u0000\u070f\u0711\u0003\u00aaU\u0000\u0710\u070e\u0001\u0000\u0000\u0000"+
55524 		"\u0711\u0714\u0001\u0000\u0000\u0000\u0712\u0710\u0001\u0000\u0000\u0000"+
55525 		"\u0712\u0713\u0001\u0000\u0000\u0000\u0713\u0720\u0001\u0000\u0000\u0000"+
55526 		"\u0714\u0712\u0001\u0000\u0000\u0000\u0715\u0716\u0005|\u0000\u0000\u0716"+
55527 		"\u0717\u0003b1\u0000\u0717\u071e\u0007\u0014\u0000\u0000\u0718\u0719\u0005"+
55528 		"\u01be\u0000\u0000\u0719\u071a\u0007\u0015\u0000\u0000\u071a\u071b\u0003"+
55529 		"b1\u0000\u071b\u071c\u0007\u0014\u0000\u0000\u071c\u071d\u0005\u01c0\u0000"+
55530 		"\u0000\u071d\u071f\u0001\u0000\u0000\u0000\u071e\u0718\u0001\u0000\u0000"+
55531 		"\u0000\u071e\u071f\u0001\u0000\u0000\u0000\u071f\u0721\u0001\u0000\u0000"+
55532 		"\u0000\u0720\u0715\u0001\u0000\u0000\u0000\u0720\u0721\u0001\u0000\u0000"+
55533 		"\u0000\u0721\u00a9\u0001\u0000\u0000\u0000\u0722\u0726\u0003H$\u0000\u0723"+
55534 		"\u0726\u0003\u001e\u000f\u0000\u0724\u0726\u0003b1\u0000\u0725\u0722\u0001"+
55535 		"\u0000\u0000\u0000\u0725\u0723\u0001\u0000\u0000\u0000\u0725\u0724\u0001"+
55536 		"\u0000\u0000\u0000\u0726\u0729\u0001\u0000\u0000\u0000\u0727\u0728\u0005"+
55537 		"\u010e\u0000\u0000\u0728\u072a\u0003*\u0015\u0000\u0729\u0727\u0001\u0000"+
55538 		"\u0000\u0000\u0729\u072a\u0001\u0000\u0000\u0000\u072a\u072c\u0001\u0000"+
55539 		"\u0000\u0000\u072b\u072d\u0007\u0011\u0000\u0000\u072c\u072b\u0001\u0000"+
55540 		"\u0000\u0000\u072c\u072d\u0001\u0000\u0000\u0000\u072d\u00ab\u0001\u0000"+
55541 		"\u0000\u0000\u072e\u072f\u0003\u00e4r\u0000\u072f\u0730\u0005\u0014\u0000"+
55542 		"\u0000\u0730\u0732\u0001\u0000\u0000\u0000\u0731\u072e\u0001\u0000\u0000"+
55543 		"\u0000\u0731\u0732\u0001\u0000\u0000\u0000\u0732\u0733\u0001\u0000\u0000"+
55544 		"\u0000\u0733\u073f\u0003\u00aeW\u0000\u0734\u0740\u0003^/\u0000\u0735"+
55545 		"\u0736\u0005\u001f\u0000\u0000\u0736\u0737\u0005\u0095\u0000\u0000\u0737"+
55546 		"\u0740\u0005 \u0000\u0000\u0738\u073a\u0005\u001f\u0000\u0000\u0739\u073b"+
55547 		"\u0007\u0016\u0000\u0000\u073a\u0739\u0001\u0000\u0000\u0000\u073a\u073b"+
55548 		"\u0001\u0000\u0000\u0000\u073b\u073c\u0001\u0000\u0000\u0000\u073c\u073d"+
55549 		"\u0003\u00e4r\u0000\u073d\u073e\u0005 \u0000\u0000\u073e\u0740\u0001\u0000"+
55550 		"\u0000\u0000\u073f\u0734\u0001\u0000\u0000\u0000\u073f\u0735\u0001\u0000"+
55551 		"\u0000\u0000\u073f\u0738\u0001\u0000\u0000\u0000\u073f\u0740\u0001\u0000"+
55552 		"\u0000\u0000\u0740\u00ad\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u0017"+
55553 		"\u0000\u0000\u0742\u00af\u0001\u0000\u0000\u0000\u0743\u0747\u0005\u02d1"+
55554 		"\u0000\u0000\u0744\u0745\u0005M\u0000\u0000\u0745\u0746\u0005\u0088\u0000"+
55555 		"\u0000\u0746\u0748\u0005\u0144\u0000\u0000\u0747\u0744\u0001\u0000\u0000"+
55556 		"\u0000\u0747\u0748\u0001\u0000\u0000\u0000\u0748\u0749\u0001\u0000\u0000"+
55557 		"\u0000\u0749\u074a\u0005\u02d3\u0000\u0000\u074a\u00b1\u0001\u0000\u0000"+
55558 		"\u0000\u074b\u074c\u0005R\u0000\u0000\u074c\u074d\u0005\u001f\u0000\u0000"+
55559 		"\u074d\u074e\u0003b1\u0000\u074e\u074f\u0005`\u0000\u0000\u074f\u0753"+
55560 		"\u0003\u00acV\u0000\u0750\u0751\u0005\u001f\u0000\u0000\u0751\u0752\u0005"+
55561 		"\u02d4\u0000\u0000\u0752\u0754\u0005 \u0000\u0000\u0753\u0750\u0001\u0000"+
55562 		"\u0000\u0000\u0753\u0754\u0001\u0000\u0000\u0000\u0754\u0755\u0001\u0000"+
55563 		"\u0000\u0000\u0755\u0756\u0005 \u0000\u0000\u0756\u00b3\u0001\u0000\u0000"+
55564 		"\u0000\u0757\u0758\u0005\u0111\u0000\u0000\u0758\u075c\u0003\u00acV\u0000"+
55565 		"\u0759\u075a\u0005\u001f\u0000\u0000\u075a\u075b\u0005\u02d4\u0000\u0000"+
55566 		"\u075b\u075d\u0005 \u0000\u0000\u075c\u0759\u0001\u0000\u0000\u0000\u075c"+
55567 		"\u075d\u0001\u0000\u0000\u0000\u075d\u075e\u0001\u0000\u0000\u0000\u075e"+
55568 		"\u075f\u0005%\u0000\u0000\u075f\u0762\u0003b1\u0000\u0760\u0761\u0005"+
55569 		"%\u0000\u0000\u0761\u0763\u0005\u02d4\u0000\u0000\u0762\u0760\u0001\u0000"+
55570 		"\u0000\u0000\u0762\u0763\u0001\u0000\u0000\u0000\u0763\u00b5\u0001\u0000"+
55571 		"\u0000\u0000\u0764\u0765\u0007\u0018\u0000\u0000\u0765\u0766\u0005\u001f"+
55572 		"\u0000\u0000\u0766\u0767\u0003b1\u0000\u0767\u0769\u0005 \u0000\u0000"+
55573 		"\u0768\u076a\u0003\u00b8\\\u0000\u0769\u0768\u0001\u0000\u0000\u0000\u0769"+
55574 		"\u076a\u0001\u0000\u0000\u0000\u076a\u076b\u0001\u0000\u0000\u0000\u076b"+
55575 		"\u076c\u0003\u00ba]\u0000\u076c\u00b7\u0001\u0000\u0000\u0000\u076d\u076e"+
55576 		"\u0007\u0019\u0000\u0000\u076e\u076f\u0005\u02dd\u0000\u0000\u076f\u00b9"+
55577 		"\u0001\u0000\u0000\u0000\u0770\u0771\u0005\u0131\u0000\u0000\u0771\u0773"+
55578 		"\u0005\u001f\u0000\u0000\u0772\u0774\u0003\u00bc^\u0000\u0773\u0772\u0001"+
55579 		"\u0000\u0000\u0000\u0773\u0774\u0001\u0000\u0000\u0000\u0774\u0776\u0001"+
55580 		"\u0000\u0000\u0000\u0775\u0777\u0003\u00a8T\u0000\u0776\u0775\u0001\u0000"+
55581 		"\u0000\u0000\u0776\u0777\u0001\u0000\u0000\u0000\u0777\u0779\u0001\u0000"+
55582 		"\u0000\u0000\u0778\u077a\u0003\u00be_\u0000\u0779\u0778\u0001\u0000\u0000"+
55583 		"\u0000\u0779\u077a\u0001\u0000\u0000\u0000\u077a\u077b\u0001\u0000\u0000"+
55584 		"\u0000\u077b\u077c\u0005 \u0000\u0000\u077c\u00bb\u0001\u0000\u0000\u0000"+
55585 		"\u077d\u077e\u0005\u00f5\u0000\u0000\u077e\u077f\u0005w\u0000\u0000\u077f"+
55586 		"\u0784\u0003b1\u0000\u0780\u0781\u0005%\u0000\u0000\u0781\u0783\u0003"+
55587 		"b1\u0000\u0782\u0780\u0001\u0000\u0000\u0000\u0783\u0786\u0001\u0000\u0000"+
55588 		"\u0000\u0784\u0782\u0001\u0000\u0000\u0000\u0784\u0785\u0001\u0000\u0000"+
55589 		"\u0000\u0785\u00bd\u0001\u0000\u0000\u0000\u0786\u0784\u0001\u0000\u0000"+
55590 		"\u0000\u0787\u0788\u0007\u001a\u0000\u0000\u0788\u0789\u0003\u00c0`\u0000"+
55591 		"\u0789\u00bf\u0001\u0000\u0000\u0000\u078a\u078d\u0003\u00c6c\u0000\u078b"+
55592 		"\u078d\u0003\u00c2a\u0000\u078c\u078a\u0001\u0000\u0000\u0000\u078c\u078b"+
55593 		"\u0001\u0000\u0000\u0000\u078d\u00c1\u0001\u0000\u0000\u0000\u078e\u078f"+
55594 		"\u0005p\u0000\u0000\u078f\u0790\u0003\u00c4b\u0000\u0790\u0791\u0005h"+
55595 		"\u0000\u0000\u0791\u0792\u0003\u00c4b\u0000\u0792\u00c3\u0001\u0000\u0000"+
55596 		"\u0000\u0793\u0796\u0003\u00c6c\u0000\u0794\u0796\u0003\u00c8d\u0000\u0795"+
55597 		"\u0793\u0001\u0000\u0000\u0000\u0795\u0794\u0001\u0000\u0000\u0000\u0796"+
55598 		"\u00c5\u0001\u0000\u0000\u0000\u0797\u0798\u0005\u0127\u0000\u0000\u0798"+
55599 		"\u079e\u0005\u0136\u0000\u0000\u0799\u079a\u0005\u02d4\u0000\u0000\u079a"+
55600 		"\u079e\u0005\u0136\u0000\u0000\u079b\u079c\u0005\u009b\u0000\u0000\u079c"+
55601 		"\u079e\u0005\u00f8\u0000\u0000\u079d\u0797\u0001\u0000\u0000\u0000\u079d"+
55602 		"\u0799\u0001\u0000\u0000\u0000\u079d\u079b\u0001\u0000\u0000\u0000\u079e"+
55603 		"\u00c7\u0001\u0000\u0000\u0000\u079f\u07a0\u0005\u0127\u0000\u0000\u07a0"+
55604 		"\u07a6\u0005\u0121\u0000\u0000\u07a1\u07a2\u0005\u02d4\u0000\u0000\u07a2"+
55605 		"\u07a6\u0005\u0121\u0000\u0000\u07a3\u07a4\u0005\u009b\u0000\u0000\u07a4"+
55606 		"\u07a6\u0005\u00f8\u0000\u0000\u07a5\u079f\u0001\u0000\u0000\u0000\u07a5"+
55607 		"\u07a1\u0001\u0000\u0000\u0000\u07a5\u07a3\u0001\u0000\u0000\u0000\u07a6"+
55608 		"\u00c9\u0001\u0000\u0000\u0000\u07a7\u07a9\u0003H$\u0000\u07a8\u07aa\u0007"+
55609 		"\u0011\u0000\u0000\u07a9\u07a8\u0001\u0000\u0000\u0000\u07a9\u07aa\u0001"+
55610 		"\u0000\u0000\u0000\u07aa\u00cb\u0001\u0000\u0000\u0000\u07ab\u07ac\u0005"+
55611 		"\u0120\u0000\u0000\u07ac\u07ad\u0005\u0018\u0000\u0000\u07ad\u07b9\u0005"+
55612 		"\u02d4\u0000\u0000\u07ae\u07b9\u0003\u00d2i\u0000\u07af\u07b0\u0007\u001b"+
55613 		"\u0000\u0000\u07b0\u07b9\u0003\u00d0h\u0000\u07b1\u07b2\u0005\u012b\u0000"+
55614 		"\u0000\u07b2\u07b3\u0005\u0018\u0000\u0000\u07b3\u07b9\u0005\u02d4\u0000"+
55615 		"\u0000\u07b4\u07b6\u0003\u00ceg\u0000\u07b5\u07b7\u0003\u00d8l\u0000\u07b6"+
55616 		"\u07b5\u0001\u0000\u0000\u0000\u07b6\u07b7\u0001\u0000\u0000\u0000\u07b7"+
55617 		"\u07b9\u0001\u0000\u0000\u0000\u07b8\u07ab\u0001\u0000\u0000\u0000\u07b8"+
55618 		"\u07ae\u0001\u0000\u0000\u0000\u07b8\u07af\u0001\u0000\u0000\u0000\u07b8"+
55619 		"\u07b1\u0001\u0000\u0000\u0000\u07b8\u07b4\u0001\u0000\u0000\u0000\u07b9"+
55620 		"\u00cd\u0001\u0000\u0000\u0000\u07ba\u07bb\u0005\u019e\u0000\u0000\u07bb"+
55621 		"\u07bc\u0005\u0018\u0000\u0000\u07bc\u07bd\u0007\u001c\u0000\u0000\u07bd"+
55622 		"\u00cf\u0001\u0000\u0000\u0000\u07be\u07bf\u0005\u0018\u0000\u0000\u07bf"+
55623 		"\u07c1\u0005\u02d4\u0000\u0000\u07c0\u07c2\u0005\u0116\u0000\u0000\u07c1"+
55624 		"\u07c0\u0001\u0000\u0000\u0000\u07c1\u07c2\u0001\u0000\u0000\u0000\u07c2"+
55625 		"\u00d1\u0001\u0000\u0000\u0000\u07c3\u07c4\u0003\u00d4j\u0000\u07c4\u07c5"+
55626 		"\u0003\u00d6k\u0000\u07c5\u00d3\u0001\u0000\u0000\u0000\u07c6\u07c7\u0007"+
55627 		"\u001d\u0000\u0000\u07c7\u00d5\u0001\u0000\u0000\u0000\u07c8\u07c9\u0005"+
55628 		"\u0018\u0000\u0000\u07c9\u07ca\u0007\u0000\u0000\u0000\u07ca\u00d7\u0001"+
55629 		"\u0000\u0000\u0000\u07cb\u07cc\u0005a\u0000\u0000\u07cc\u07cd\u0005\u00f6"+
55630 		"\u0000\u0000\u07cd\u07ce\u0005\u001f\u0000\u0000\u07ce\u07cf\u0003\u00da"+
55631 		"m\u0000\u07cf\u07d0\u0005 \u0000\u0000\u07d0\u00d9\u0001\u0000\u0000\u0000"+
55632 		"\u07d1\u07d6\u0003\u00dcn\u0000\u07d2\u07d3\u0005%\u0000\u0000\u07d3\u07d5"+
55633 		"\u0003\u00dcn\u0000\u07d4\u07d2\u0001\u0000\u0000\u0000\u07d5\u07d8\u0001"+
55634 		"\u0000\u0000\u0000\u07d6\u07d4\u0001\u0000\u0000\u0000\u07d6\u07d7\u0001"+
55635 		"\u0000\u0000\u0000\u07d7\u00db\u0001\u0000\u0000\u0000\u07d8\u07d6\u0001"+
55636 		"\u0000\u0000\u0000\u07d9\u07dc\u0005\u02d4\u0000\u0000\u07da\u07dc\u0003"+
55637 		"\u00deo\u0000\u07db\u07d9\u0001\u0000\u0000\u0000\u07db\u07da\u0001\u0000"+
55638 		"\u0000\u0000\u07dc\u00dd\u0001\u0000\u0000\u0000\u07dd\u07de\u0005\u02d4"+
55639 		"\u0000\u0000\u07de\u07df\u0005g\u0000\u0000\u07df\u07e0\u0005\u02d4\u0000"+
55640 		"\u0000\u07e0\u00df\u0001\u0000\u0000\u0000\u07e1\u07e2\u0005\u01a4\u0000"+
55641 		"\u0000\u07e2\u07e3\u0005\u001f\u0000\u0000\u07e3\u07e4\u0005\u01ad\u0000"+
55642 		"\u0000\u07e4\u07e5\u0005\u0018\u0000\u0000\u07e5\u07e7\u0005\u02d4\u0000"+
55643 		"\u0000\u07e6\u07e8\u0005\u0116\u0000\u0000\u07e7\u07e6\u0001\u0000\u0000"+
55644 		"\u0000\u07e7\u07e8\u0001\u0000\u0000\u0000\u07e8\u07e9\u0001\u0000\u0000"+
55645 		"\u0000\u07e9\u07ea\u0005%\u0000\u0000\u07ea\u07eb\u0005\u0194\u0000\u0000"+
55646 		"\u07eb\u07ec\u0005\u0018\u0000\u0000\u07ec\u07ed\u0007\u001e\u0000\u0000"+
55647 		"\u07ed\u07ee\u0005 \u0000\u0000\u07ee\u00e1\u0001\u0000\u0000\u0000\u07ef"+
55648 		"\u07f4\u0005a\u0000\u0000\u07f0\u07f1\u0005\u001f\u0000\u0000\u07f1\u07f2"+
55649 		"\u0003\u00e0p\u0000\u07f2\u07f3\u0005 \u0000\u0000\u07f3\u07f5\u0001\u0000"+
55650 		"\u0000\u0000\u07f4\u07f0\u0001\u0000\u0000\u0000\u07f4\u07f5\u0001\u0000"+
55651 		"\u0000\u0000\u07f5\u00e3\u0001\u0000\u0000\u0000\u07f6\u07f7\u0005\u02d1"+
55652 		"\u0000\u0000\u07f7\u00e5\u0001\u0000\u0000\u0000\u07f8\u07fd\u0003\u00e4"+
55653 		"r\u0000\u07f9\u07fa\u0005%\u0000\u0000\u07fa\u07fc\u0003\u00e4r\u0000"+
55654 		"\u07fb\u07f9\u0001\u0000\u0000\u0000\u07fc\u07ff\u0001\u0000\u0000\u0000"+
55655 		"\u07fd\u07fb\u0001\u0000\u0000\u0000\u07fd\u07fe\u0001\u0000\u0000\u0000"+
55656 		"\u07fe\u00e7\u0001\u0000\u0000\u0000\u07ff\u07fd\u0001\u0000\u0000\u0000"+
55657 		"\u0800\u0801\u0005\u0001\u0000\u0000\u0801\u00e9\u0001\u0000\u0000\u0000"+
55658 		"\u0802\u0803\u0003*\u0015\u0000\u0803\u00eb\u0001\u0000\u0000\u0000\u0804"+
55659 		"\u0805\u0007\u001f\u0000\u0000\u0805\u080a\u0005`\u0000\u0000\u0806\u080b"+
55660 		"\u0005\u0211\u0000\u0000\u0807\u080b\u0005\u013f\u0000\u0000\u0808\u080b"+
55661 		"\u0005\u0216\u0000\u0000\u0809\u080b\u0003\u001c\u000e\u0000\u080a\u0806"+
55662 		"\u0001\u0000\u0000\u0000\u080a\u0807\u0001\u0000\u0000\u0000\u080a\u0808"+
55663 		"\u0001\u0000\u0000\u0000\u080a\u0809\u0001\u0000\u0000\u0000\u080b\u00ed"+
55664 		"\u0001\u0000\u0000\u0000\u080c\u080d\u0003*\u0015\u0000\u080d\u00ef\u0001"+
55665 		"\u0000\u0000\u0000\u080e\u080f\u0003\u00eau\u0000\u080f\u00f1\u0001\u0000"+
55666 		"\u0000\u0000\u0810\u0811\u0003*\u0015\u0000\u0811\u00f3\u0001\u0000\u0000"+
55667 		"\u0000\u0812\u0813\u0003\u00eau\u0000\u0813\u00f5\u0001\u0000\u0000\u0000"+
55668 		"\u0814\u0815\u0007 \u0000\u0000\u0815\u00f7\u0001\u0000\u0000\u0000\u0816"+
55669 		"\u0817\u0005c\u0000\u0000\u0817\u0818\u0005o\u0000\u0000\u0818\u00f9\u0001"+
55670 		"\u0000\u0000\u0000\u0819\u081a\u0007!\u0000\u0000\u081a\u00fb\u0001\u0000"+
55671 		"\u0000\u0000\u081b\u081c\u0005\u009e\u0000\u0000\u081c\u00fd\u0001\u0000"+
55672 		"\u0000\u0000\u081d\u081f\u0005\u029c\u0000\u0000\u081e\u0820\u0005\u029d"+
55673 		"\u0000\u0000\u081f\u081e\u0001\u0000\u0000\u0000\u081f\u0820\u0001\u0000"+
55674 		"\u0000\u0000\u0820\u0821\u0001\u0000\u0000\u0000\u0821\u0822\u0003\u0100"+
55675 		"\u0080\u0000\u0822\u00ff\u0001\u0000\u0000\u0000\u0823\u0829\u0003\u02dc"+
55676 		"\u016e\u0000\u0824\u0829\u0003\u02ba\u015d\u0000\u0825\u0829\u0003\u02c8"+
55677 		"\u0164\u0000\u0826\u0829\u0003\u02d2\u0169\u0000\u0827\u0829\u0003\u02b0"+
55678 		"\u0158\u0000\u0828\u0823\u0001\u0000\u0000\u0000\u0828\u0824\u0001\u0000"+
55679 		"\u0000\u0000\u0828\u0825\u0001\u0000\u0000\u0000\u0828\u0826\u0001\u0000"+
55680 		"\u0000\u0000\u0828\u0827\u0001\u0000\u0000\u0000\u0829\u0101\u0001\u0000"+
55681 		"\u0000\u0000\u082a\u082d\u0003\u0104\u0082\u0000\u082b\u082d\u0003\u02b0"+
55682 		"\u0158\u0000\u082c\u082a\u0001\u0000\u0000\u0000\u082c\u082b\u0001\u0000"+
55683 		"\u0000\u0000\u082d\u0103\u0001\u0000\u0000\u0000\u082e\u082f\u00052\u0000"+
55684 		"\u0000\u082f\u0830\u0005;\u0000\u0000\u0830\u0831\u0003@ \u0000\u0831"+
55685 		"\u0832\u0003\u014c\u00a6\u0000\u0832\u0833\u0003\u014e\u00a7\u0000\u0833"+
55686 		"\u0105\u0001\u0000\u0000\u0000\u0834\u0835\u00052\u0000\u0000\u0835\u0836"+
55687 		"\u0003\u01bc\u00de\u0000\u0836\u0837\u0005>\u0000\u0000\u0837\u0838\u0003"+
55688 		"V+\u0000\u0838\u0839\u0005a\u0000\u0000\u0839\u083a\u0003@ \u0000\u083a"+
55689 		"\u083b\u0003R)\u0000\u083b\u083c\u0003\u0262\u0131\u0000\u083c\u0107\u0001"+
55690 		"\u0000\u0000\u0000\u083d\u083e\u00052\u0000\u0000\u083e\u083f\u0005\u00cc"+
55691 		"\u0000\u0000\u083f\u0840\u00032\u0019\u0000\u0840\u0841\u0003\u0204\u0102"+
55692 		"\u0000\u0841\u0109\u0001\u0000\u0000\u0000\u0842\u0845\u00052\u0000\u0000"+
55693 		"\u0843\u0844\u0005i\u0000\u0000\u0844\u0846\u00053\u0000\u0000\u0845\u0843"+
55694 		"\u0001\u0000\u0000\u0000\u0845\u0846\u0001\u0000\u0000\u0000\u0846\u0847"+
55695 		"\u0001\u0000\u0000\u0000\u0847\u0848\u0005F\u0000\u0000\u0848\u0849\u0003"+
55696 		"6\u001b\u0000\u0849\u084a\u0003\u0230\u0118\u0000\u084a\u084b\u0003\u0232"+
55697 		"\u0119\u0000\u084b\u010b\u0001\u0000\u0000\u0000\u084c\u084f\u00052\u0000"+
55698 		"\u0000\u084d\u084e\u0005i\u0000\u0000\u084e\u0850\u00053\u0000\u0000\u084f"+
55699 		"\u084d\u0001\u0000\u0000\u0000\u084f\u0850\u0001\u0000\u0000\u0000\u0850"+
55700 		"\u0851\u0001\u0000\u0000\u0000\u0851\u0852\u0007\"\u0000\u0000\u0852\u0853"+
55701 		"\u00038\u001c\u0000\u0853\u0854\u0003\u0242\u0121\u0000\u0854\u0855\u0003"+
55702 		"\u0246\u0123\u0000\u0855\u010d\u0001\u0000\u0000\u0000\u0856\u0859\u0005"+
55703 		"2\u0000\u0000\u0857\u0858\u0005i\u0000\u0000\u0858\u085a\u00053\u0000"+
55704 		"\u0000\u0859\u0857\u0001\u0000\u0000\u0000\u0859\u085a\u0001\u0000\u0000"+
55705 		"\u0000\u085a\u085b\u0001\u0000\u0000\u0000\u085b\u085c\u0005J\u0000\u0000"+
55706 		"\u085c\u085d\u0003:\u001d\u0000\u085d\u085e\u0003\u0250\u0128\u0000\u085e"+
55707 		"\u010f\u0001\u0000\u0000\u0000\u085f\u0862\u00052\u0000\u0000\u0860\u0861"+
55708 		"\u0005i\u0000\u0000\u0861\u0863\u00053\u0000\u0000\u0862\u0860\u0001\u0000"+
55709 		"\u0000\u0000\u0862\u0863\u0001\u0000\u0000\u0000\u0863\u0864\u0001\u0000"+
55710 		"\u0000\u0000\u0864\u0865\u0005G\u0000\u0000\u0865\u0866\u0003<\u001e\u0000"+
55711 		"\u0866\u0867\u0005a\u0000\u0000\u0867\u0868\u0003\u025e\u012f\u0000\u0868"+
55712 		"\u0869\u0003\u0258\u012c\u0000\u0869\u0111\u0001\u0000\u0000\u0000\u086a"+
55713 		"\u086b\u00052\u0000\u0000\u086b\u086c\u0005\u0193\u0000\u0000\u086c\u0870"+
55714 		"\u0003>\u001f\u0000\u086d\u086f\u0003\u0260\u0130\u0000\u086e\u086d\u0001"+
55715 		"\u0000\u0000\u0000\u086f\u0872\u0001\u0000\u0000\u0000\u0870\u086e\u0001"+
55716 		"\u0000\u0000\u0000\u0870\u0871\u0001\u0000\u0000\u0000\u0871\u0113\u0001"+
55717 		"\u0000\u0000\u0000\u0872\u0870\u0001\u0000\u0000\u0000\u0873\u0874\u0005"+
55718 		"2\u0000\u0000\u0874\u0875\u0005\u0172\u0000\u0000\u0875\u0878\u0003F#"+
55719 		"\u0000\u0876\u0877\u0005\u029a\u0000\u0000\u0877\u0879\u0005\u02d3\u0000"+
55720 		"\u0000\u0878\u0876\u0001\u0000\u0000\u0000\u0878\u0879\u0001\u0000\u0000"+
55721 		"\u0000\u0879\u087a\u0001\u0000\u0000\u0000\u087a\u087b\u0005a\u0000\u0000"+
55722 		"\u087b\u087c\u0005\u0186\u0000\u0000\u087c\u087e\u0003B!\u0000\u087d\u087f"+
55723 		"\u0003\u02a6\u0153\u0000\u087e\u087d\u0001\u0000\u0000\u0000\u087e\u087f"+
55724 		"\u0001\u0000\u0000\u0000\u087f\u0115\u0001\u0000\u0000\u0000\u0880\u0881"+
55725 		"\u00052\u0000\u0000\u0881\u0882\u00056\u0000\u0000\u0882\u0886\u0003\u02ac"+
55726 		"\u0156\u0000\u0883\u0885\u0003\u02ae\u0157\u0000\u0884\u0883\u0001\u0000"+
55727 		"\u0000\u0000\u0885\u0888\u0001\u0000\u0000\u0000\u0886\u0884\u0001\u0000"+
55728 		"\u0000\u0000\u0886\u0887\u0001\u0000\u0000\u0000\u0887\u0117\u0001\u0000"+
55729 		"\u0000\u0000\u0888\u0886\u0001\u0000\u0000\u0000\u0889\u088a\u00053\u0000"+
55730 		"\u0000\u088a\u088b\u0005;\u0000\u0000\u088b\u088c\u0003@ \u0000\u088c"+
55731 		"\u0891\u0003\u01be\u00df\u0000\u088d\u088e\u0005%\u0000\u0000\u088e\u0890"+
55732 		"\u0003\u01be\u00df\u0000\u088f\u088d\u0001\u0000\u0000\u0000\u0890\u0893"+
55733 		"\u0001\u0000\u0000\u0000\u0891\u088f\u0001\u0000\u0000\u0000\u0891\u0892"+
55734 		"\u0001\u0000\u0000\u0000\u0892\u0119\u0001\u0000\u0000\u0000\u0893\u0891"+
55735 		"\u0001\u0000\u0000\u0000\u0894\u0895\u00053\u0000\u0000\u0895\u0898\u0005"+
55736 		">\u0000\u0000\u0896\u0899\u0003V+\u0000\u0897\u0899\u0005r\u0000\u0000"+
55737 		"\u0898\u0896\u0001\u0000\u0000\u0000\u0898\u0897\u0001\u0000\u0000\u0000"+
55738 		"\u0899\u089a\u0001\u0000\u0000\u0000\u089a\u089b\u0005a\u0000\u0000\u089b"+
55739 		"\u089c\u0003@ \u0000\u089c\u089d\u0003\u0268\u0134\u0000\u089d\u011b\u0001"+
55740 		"\u0000\u0000\u0000\u089e\u089f\u00053\u0000\u0000\u089f\u08a2\u0005\u00cc"+
55741 		"\u0000\u0000\u08a0\u08a3\u00032\u0019\u0000\u08a1\u08a3\u0005\u009b\u0000"+
55742 		"\u0000\u08a2\u08a0\u0001\u0000\u0000\u0000\u08a2\u08a1\u0001\u0000\u0000"+
55743 		"\u0000\u08a3\u08a7\u0001\u0000\u0000\u0000\u08a4\u08a6\u0003\u0274\u013a"+
55744 		"\u0000\u08a5\u08a4\u0001\u0000\u0000\u0000\u08a6\u08a9\u0001\u0000\u0000"+
55745 		"\u0000\u08a7\u08a5\u0001\u0000\u0000\u0000\u08a7\u08a8\u0001\u0000\u0000"+
55746 		"\u0000\u08a8\u011d\u0001\u0000\u0000\u0000\u08a9\u08a7\u0001\u0000\u0000"+
55747 		"\u0000\u08aa\u08ab\u00053\u0000\u0000\u08ab\u08ac\u0007\"\u0000\u0000"+
55748 		"\u08ac\u08ad\u00038\u001c\u0000\u08ad\u08ae\u0003\u0242\u0121\u0000\u08ae"+
55749 		"\u08af\u0003\u0246\u0123\u0000\u08af\u011f\u0001\u0000\u0000\u0000\u08b0"+
55750 		"\u08b1\u00053\u0000\u0000\u08b1\u08b2\u0005F\u0000\u0000\u08b2\u08b3\u0003"+
55751 		"6\u001b\u0000\u08b3\u08b4\u0003\u0230\u0118\u0000\u08b4\u08b5\u0003\u0232"+
55752 		"\u0119\u0000\u08b5\u0121\u0001\u0000\u0000\u0000\u08b6\u08b7\u00053\u0000"+
55753 		"\u0000\u08b7\u08b8\u0005J\u0000\u0000\u08b8\u08b9\u0003:\u001d\u0000\u08b9"+
55754 		"\u08ba\u0003\u0250\u0128\u0000\u08ba\u0123\u0001\u0000\u0000\u0000\u08bb"+
55755 		"\u08bc\u00053\u0000\u0000\u08bc\u08bd\u0005G\u0000\u0000\u08bd\u08be\u0003"+
55756 		"<\u001e\u0000\u08be\u08bf\u0005a\u0000\u0000\u08bf\u08c0\u0003\u025e\u012f"+
55757 		"\u0000\u08c0\u08c1\u0003\u0258\u012c\u0000\u08c1\u0125\u0001\u0000\u0000"+
55758 		"\u0000\u08c2\u08c3\u00053\u0000\u0000\u08c3\u08c4\u0005\u0193\u0000\u0000"+
55759 		"\u08c4\u08c8\u0003>\u001f\u0000\u08c5\u08c7\u0003\u0260\u0130\u0000\u08c6"+
55760 		"\u08c5\u0001\u0000\u0000\u0000\u08c7\u08ca\u0001\u0000\u0000\u0000\u08c8"+
55761 		"\u08c6\u0001\u0000\u0000\u0000\u08c8\u08c9\u0001\u0000\u0000\u0000\u08c9"+
55762 		"\u0127\u0001\u0000\u0000\u0000\u08ca\u08c8\u0001\u0000\u0000\u0000\u08cb"+
55763 		"\u08cc\u00053\u0000\u0000\u08cc\u08cd\u0005\u0172\u0000\u0000\u08cd\u08d1"+
55764 		"\u0003F#\u0000\u08ce\u08cf\u0005a\u0000\u0000\u08cf\u08d0\u0005\u0186"+
55765 		"\u0000\u0000\u08d0\u08d2\u0003B!\u0000\u08d1\u08ce\u0001\u0000\u0000\u0000"+
55766 		"\u08d1\u08d2\u0001\u0000\u0000\u0000\u08d2\u08d4\u0001\u0000\u0000\u0000"+
55767 		"\u08d3\u08d5\u0003\u02a8\u0154\u0000\u08d4\u08d3\u0001\u0000\u0000\u0000"+
55768 		"\u08d4\u08d5\u0001\u0000\u0000\u0000\u08d5\u0129\u0001\u0000\u0000\u0000"+
55769 		"\u08d6\u08d7\u00053\u0000\u0000\u08d7\u08d8\u00056\u0000\u0000\u08d8\u08d9"+
55770 		"\u00034\u001a\u0000\u08d9\u08db\u0005\u029b\u0000\u0000\u08da\u08dc\u0003"+
55771 		"\u038a\u01c5\u0000\u08db\u08da\u0001\u0000\u0000\u0000\u08db\u08dc\u0001"+
55772 		"\u0000\u0000\u0000\u08dc\u08dd\u0001\u0000\u0000\u0000\u08dd\u08de\u0003"+
55773 		"\u00e4r\u0000\u08de\u012b\u0001\u0000\u0000\u0000\u08df\u08e0\u00054\u0000"+
55774 		"\u0000\u08e0\u08e2\u0005;\u0000\u0000\u08e1\u08e3\u0003\u00f8|\u0000\u08e2"+
55775 		"\u08e1\u0001\u0000\u0000\u0000\u08e2\u08e3\u0001\u0000\u0000\u0000\u08e3"+
55776 		"\u08e4\u0001\u0000\u0000\u0000\u08e4\u08e5\u0003T*\u0000\u08e5\u012d\u0001"+
55777 		"\u0000\u0000\u0000\u08e6\u08e7\u00054\u0000\u0000\u08e7\u08e9\u0005>\u0000"+
55778 		"\u0000\u08e8\u08ea\u0003\u00f8|\u0000\u08e9\u08e8\u0001\u0000\u0000\u0000"+
55779 		"\u08e9\u08ea\u0001\u0000\u0000\u0000\u08ea\u08eb\u0001\u0000\u0000\u0000"+
55780 		"\u08eb\u08ec\u0003V+\u0000\u08ec\u08ed\u0005a\u0000\u0000\u08ed\u08ee"+
55781 		"\u0003@ \u0000\u08ee\u012f\u0001\u0000\u0000\u0000\u08ef\u08f0\u00054"+
55782 		"\u0000\u0000\u08f0\u08f2\u0005\u00cc\u0000\u0000\u08f1\u08f3\u0003\u00f8"+
55783 		"|\u0000\u08f2\u08f1\u0001\u0000\u0000\u0000\u08f2\u08f3\u0001\u0000\u0000"+
55784 		"\u0000\u08f3\u08f4\u0001\u0000\u0000\u0000\u08f4\u08f9\u00032\u0019\u0000"+
55785 		"\u08f5\u08f6\u0005%\u0000\u0000\u08f6\u08f8\u00032\u0019\u0000\u08f7\u08f5"+
55786 		"\u0001\u0000\u0000\u0000\u08f8\u08fb\u0001\u0000\u0000\u0000\u08f9\u08f7"+
55787 		"\u0001\u0000\u0000\u0000\u08f9\u08fa\u0001\u0000\u0000\u0000\u08fa\u0131"+
55788 		"\u0001\u0000\u0000\u0000\u08fb\u08f9\u0001\u0000\u0000\u0000\u08fc\u08fd"+
55789 		"\u00054\u0000\u0000\u08fd\u08ff\u0005F\u0000\u0000\u08fe\u0900\u0003\u00f8"+
55790 		"|\u0000\u08ff\u08fe\u0001\u0000\u0000\u0000\u08ff\u0900\u0001\u0000\u0000"+
55791 		"\u0000\u0900\u0901\u0001\u0000\u0000\u0000\u0901\u0906\u00036\u001b\u0000"+
55792 		"\u0902\u0903\u0005%\u0000\u0000\u0903\u0905\u00036\u001b\u0000\u0904\u0902"+
55793 		"\u0001\u0000\u0000\u0000\u0905\u0908\u0001\u0000\u0000\u0000\u0906\u0904"+
55794 		"\u0001\u0000\u0000\u0000\u0906\u0907\u0001\u0000\u0000\u0000\u0907\u0133"+
55795 		"\u0001\u0000\u0000\u0000\u0908\u0906\u0001\u0000\u0000\u0000\u0909\u090a"+
55796 		"\u00054\u0000\u0000\u090a\u090c\u0007\"\u0000\u0000\u090b\u090d\u0003"+
55797 		"\u00f8|\u0000\u090c\u090b\u0001\u0000\u0000\u0000\u090c\u090d\u0001\u0000"+
55798 		"\u0000\u0000\u090d\u090e\u0001\u0000\u0000\u0000\u090e\u0913\u00038\u001c"+
55799 		"\u0000\u090f\u0910\u0005%\u0000\u0000\u0910\u0912\u00038\u001c\u0000\u0911"+
55800 		"\u090f\u0001\u0000\u0000\u0000\u0912\u0915\u0001\u0000\u0000\u0000\u0913"+
55801 		"\u0911\u0001\u0000\u0000\u0000\u0913\u0914\u0001\u0000\u0000\u0000\u0914"+
55802 		"\u0135\u0001\u0000\u0000\u0000\u0915\u0913\u0001\u0000\u0000\u0000\u0916"+
55803 		"\u0917\u00054\u0000\u0000\u0917\u0919\u0005J\u0000\u0000\u0918\u091a\u0003"+
55804 		"\u00f8|\u0000\u0919\u0918\u0001\u0000\u0000\u0000\u0919\u091a\u0001\u0000"+
55805 		"\u0000\u0000\u091a\u091b\u0001\u0000\u0000\u0000\u091b\u0920\u0003:\u001d"+
55806 		"\u0000\u091c\u091d\u0005%\u0000\u0000\u091d\u091f\u0003:\u001d\u0000\u091e"+
55807 		"\u091c\u0001\u0000\u0000\u0000\u091f\u0922\u0001\u0000\u0000\u0000\u0920"+
55808 		"\u091e\u0001\u0000\u0000\u0000\u0920\u0921\u0001\u0000\u0000\u0000\u0921"+
55809 		"\u0137\u0001\u0000\u0000\u0000\u0922\u0920\u0001\u0000\u0000\u0000\u0923"+
55810 		"\u0924\u00054\u0000\u0000\u0924\u0926\u0005G\u0000\u0000\u0925\u0927\u0003"+
55811 		"\u00f8|\u0000\u0926\u0925\u0001\u0000\u0000\u0000\u0926\u0927\u0001\u0000"+
55812 		"\u0000\u0000\u0927\u0928\u0001\u0000\u0000\u0000\u0928\u092d\u0003<\u001e"+
55813 		"\u0000\u0929\u092a\u0005%\u0000\u0000\u092a\u092c\u0003<\u001e\u0000\u092b"+
55814 		"\u0929\u0001\u0000\u0000\u0000\u092c\u092f\u0001\u0000\u0000\u0000\u092d"+
55815 		"\u092b\u0001\u0000\u0000\u0000\u092d\u092e\u0001\u0000\u0000\u0000\u092e"+
55816 		"\u0936\u0001\u0000\u0000\u0000\u092f\u092d\u0001\u0000\u0000\u0000\u0930"+
55817 		"\u0934\u0005a\u0000\u0000\u0931\u0935\u0005\u00cc\u0000\u0000\u0932\u0933"+
55818 		"\u0005r\u0000\u0000\u0933\u0935\u0005\u0154\u0000\u0000\u0934\u0931\u0001"+
55819 		"\u0000\u0000\u0000\u0934\u0932\u0001\u0000\u0000\u0000\u0935\u0937\u0001"+
55820 		"\u0000\u0000\u0000\u0936\u0930\u0001\u0000\u0000\u0000\u0936\u0937\u0001"+
55821 		"\u0000\u0000\u0000\u0937\u0139\u0001\u0000\u0000\u0000\u0938\u0939\u0005"+
55822 		"4\u0000\u0000\u0939\u093b\u0005\u0193\u0000\u0000\u093a\u093c\u0003\u00f8"+
55823 		"|\u0000\u093b\u093a\u0001\u0000\u0000\u0000\u093b\u093c\u0001\u0000\u0000"+
55824 		"\u0000\u093c\u093d\u0001\u0000\u0000\u0000\u093d\u0942\u0003>\u001f\u0000"+
55825 		"\u093e\u093f\u0005%\u0000\u0000\u093f\u0941\u0003>\u001f\u0000\u0940\u093e"+
55826 		"\u0001\u0000\u0000\u0000\u0941\u0944\u0001\u0000\u0000\u0000\u0942\u0940"+
55827 		"\u0001\u0000\u0000\u0000\u0942\u0943\u0001\u0000\u0000\u0000\u0943\u013b"+
55828 		"\u0001\u0000\u0000\u0000\u0944\u0942\u0001\u0000\u0000\u0000\u0945\u0946"+
55829 		"\u00054\u0000\u0000\u0946\u0947\u0005\u0172\u0000\u0000\u0947\u0948\u0003"+
55830 		"F#\u0000\u0948\u013d\u0001\u0000\u0000\u0000\u0949\u094a\u00054\u0000"+
55831 		"\u0000\u094a\u094c\u00056\u0000\u0000\u094b\u094d\u0003\u00f8|\u0000\u094c"+
55832 		"\u094b\u0001\u0000\u0000\u0000\u094c\u094d\u0001\u0000\u0000\u0000\u094d"+
55833 		"\u094e\u0001\u0000\u0000\u0000\u094e\u094f\u00034\u001a\u0000\u094f\u013f"+
55834 		"\u0001\u0000\u0000\u0000\u0950\u0951\u00055\u0000\u0000\u0951\u0952\u0005"+
55835 		";\u0000\u0000\u0952\u0953\u0003@ \u0000\u0953\u0141\u0001\u0000\u0000"+
55836 		"\u0000\u0954\u0955\u00050\u0000\u0000\u0955\u0956\u0005\u02c6\u0000\u0000"+
55837 		"\u0956\u0965\u0003@ \u0000\u0957\u0959\u0005\u001f\u0000\u0000\u0958\u0957"+
55838 		"\u0001\u0000\u0000\u0000\u0958\u0959\u0001\u0000\u0000\u0000\u0959\u095a"+
55839 		"\u0001\u0000\u0000\u0000\u095a\u095f\u0003V+\u0000\u095b\u095c\u0005%"+
55840 		"\u0000\u0000\u095c\u095e\u0003V+\u0000\u095d\u095b\u0001\u0000\u0000\u0000"+
55841 		"\u095e\u0961\u0001\u0000\u0000\u0000\u095f\u095d\u0001\u0000\u0000\u0000"+
55842 		"\u095f\u0960\u0001\u0000\u0000\u0000\u0960\u0963\u0001\u0000\u0000\u0000"+
55843 		"\u0961\u095f\u0001\u0000\u0000\u0000\u0962\u0964\u0005 \u0000\u0000\u0963"+
55844 		"\u0962\u0001\u0000\u0000\u0000\u0963\u0964\u0001\u0000\u0000\u0000\u0964"+
55845 		"\u0966\u0001\u0000\u0000\u0000\u0965\u0958\u0001\u0000\u0000\u0000\u0965"+
55846 		"\u0966\u0001\u0000\u0000\u0000\u0966\u0968\u0001\u0000\u0000\u0000\u0967"+
55847 		"\u0969\u0003\u0144\u00a2\u0000\u0968\u0967\u0001\u0000\u0000\u0000\u0968"+
55848 		"\u0969\u0001\u0000\u0000\u0000\u0969\u0143\u0001\u0000\u0000\u0000\u096a"+
55849 		"\u096c\u0005M\u0000\u0000\u096b\u096d\u0003\u0146\u00a3\u0000\u096c\u096b"+
55850 		"\u0001\u0000\u0000\u0000\u096c\u096d\u0001\u0000\u0000\u0000\u096d\u096f"+
55851 		"\u0001\u0000\u0000\u0000\u096e\u0970\u0003\u0148\u00a4\u0000\u096f\u096e"+
55852 		"\u0001\u0000\u0000\u0000\u096f\u0970\u0001\u0000\u0000\u0000\u0970\u0145"+
55853 		"\u0001\u0000\u0000\u0000\u0971\u0976\u0005\u02c7\u0000\u0000\u0972\u0973"+
55854 		"\u0005\u02c8\u0000\u0000\u0973\u0974\u0005\u02d4\u0000\u0000\u0974\u0976"+
55855 		"\u0007#\u0000\u0000\u0975\u0971\u0001\u0000\u0000\u0000\u0975\u0972\u0001"+
55856 		"\u0000\u0000\u0000\u0976\u097a\u0001\u0000\u0000\u0000\u0977\u0978\u0005"+
55857 		"\u02cc\u0000\u0000\u0978\u0979\u0005\u0018\u0000\u0000\u0979\u097b\u0007"+
55858 		"\u0000\u0000\u0000\u097a\u0977\u0001\u0000\u0000\u0000\u097a\u097b\u0001"+
55859 		"\u0000\u0000\u0000\u097b\u098c\u0001\u0000\u0000\u0000\u097c\u0989\u0005"+
55860 		"\u02c9\u0000\u0000\u097d\u097e\u0005a\u0000\u0000\u097e\u097f\u0005\u00f6"+
55861 		"\u0000\u0000\u097f\u0980\u0005\u001f\u0000\u0000\u0980\u0985\u0005\u02d4"+
55862 		"\u0000\u0000\u0981\u0982\u0005%\u0000\u0000\u0982\u0984\u0005\u02d4\u0000"+
55863 		"\u0000\u0983\u0981\u0001\u0000\u0000\u0000\u0984\u0987\u0001\u0000\u0000"+
55864 		"\u0000\u0985\u0983\u0001\u0000\u0000\u0000\u0985\u0986\u0001\u0000\u0000"+
55865 		"\u0000\u0986\u0988\u0001\u0000\u0000\u0000\u0987\u0985\u0001\u0000\u0000"+
55866 		"\u0000\u0988\u098a\u0005 \u0000\u0000\u0989\u097d\u0001\u0000\u0000\u0000"+
55867 		"\u0989\u098a\u0001\u0000\u0000\u0000\u098a\u098c\u0001\u0000\u0000\u0000"+
55868 		"\u098b\u0975\u0001\u0000\u0000\u0000\u098b\u097c\u0001\u0000\u0000\u0000"+
55869 		"\u098c\u0147\u0001\u0000\u0000\u0000\u098d\u098f\u0005%\u0000\u0000\u098e"+
55870 		"\u098d\u0001\u0000\u0000\u0000\u098e\u098f\u0001\u0000\u0000\u0000\u098f"+
55871 		"\u0990\u0001\u0000\u0000\u0000\u0990\u0992\u0003\u014a\u00a5\u0000\u0991"+
55872 		"\u098e\u0001\u0000\u0000\u0000\u0992\u0993\u0001\u0000\u0000\u0000\u0993"+
55873 		"\u0991\u0001\u0000\u0000\u0000\u0993\u0994\u0001\u0000\u0000\u0000\u0994"+
55874 		"\u0149\u0001\u0000\u0000\u0000\u0995\u09a3\u0005r\u0000\u0000\u0996\u09a3"+
55875 		"\u0005=\u0000\u0000\u0997\u09a3\u0005>\u0000\u0000\u0998\u09a3\u0005\u02ca"+
55876 		"\u0000\u0000\u0999\u099a\u0005\u0275\u0000\u0000\u099a\u099b\u0005\u0018"+
55877 		"\u0000\u0000\u099b\u09a3\u0007\u0000\u0000\u0000\u099c\u099d\u0005\u012b"+
55878 		"\u0000\u0000\u099d\u099e\u0005\u0018\u0000\u0000\u099e\u09a3\u0005\u02d4"+
55879 		"\u0000\u0000\u099f\u09a0\u0005\u02cb\u0000\u0000\u09a0\u09a1\u0005\u0018"+
55880 		"\u0000\u0000\u09a1\u09a3\u0007\u0000\u0000\u0000\u09a2\u0995\u0001\u0000"+
55881 		"\u0000\u0000\u09a2\u0996\u0001\u0000\u0000\u0000\u09a2\u0997\u0001\u0000"+
55882 		"\u0000\u0000\u09a2\u0998\u0001\u0000\u0000\u0000\u09a2\u0999\u0001\u0000"+
55883 		"\u0000\u0000\u09a2\u099c\u0001\u0000\u0000\u0000\u09a2\u099f\u0001\u0000"+
55884 		"\u0000\u0000\u09a3\u014b\u0001\u0000\u0000\u0000\u09a4\u09a5\u0005`\u0000"+
55885 		"\u0000\u09a5\u09a7\u0005\u011f\u0000\u0000\u09a6\u09a4\u0001\u0000\u0000"+
55886 		"\u0000\u09a6\u09a7\u0001\u0000\u0000\u0000\u09a7\u014d\u0001\u0000\u0000"+
55887 		"\u0000\u09a8\u09a9\u0003\u0150\u00a8\u0000\u09a9\u09aa\u0003\u01a4\u00d2"+
55888 		"\u0000\u09aa\u09ab\u0003\u01a6\u00d3\u0000\u09ab\u014f\u0001\u0000\u0000"+
55889 		"\u0000\u09ac\u09ad\u0005\u001f\u0000\u0000\u09ad\u09b2\u0003\u0152\u00a9"+
55890 		"\u0000\u09ae\u09af\u0005%\u0000\u0000\u09af\u09b1\u0003\u0152\u00a9\u0000"+
55891 		"\u09b0\u09ae\u0001\u0000\u0000\u0000\u09b1\u09b4\u0001\u0000\u0000\u0000"+
55892 		"\u09b2\u09b0\u0001\u0000\u0000\u0000\u09b2\u09b3\u0001\u0000\u0000\u0000"+
55893 		"\u09b3\u09b7\u0001\u0000\u0000\u0000\u09b4\u09b2\u0001\u0000\u0000\u0000"+
55894 		"\u09b5\u09b6\u0005%\u0000\u0000\u09b6\u09b8\u0003\u01a2\u00d1\u0000\u09b7"+
55895 		"\u09b5\u0001\u0000\u0000\u0000\u09b7\u09b8\u0001\u0000\u0000\u0000\u09b8"+
55896 		"\u09b9\u0001\u0000\u0000\u0000\u09b9\u09ba\u0005 \u0000\u0000\u09ba\u0151"+
55897 		"\u0001\u0000\u0000\u0000\u09bb\u09c1\u0003\u0154\u00aa\u0000\u09bc\u09c1"+
55898 		"\u0003\u018a\u00c5\u0000\u09bd\u09c1\u0003\u018c\u00c6\u0000\u09be\u09c1"+
55899 		"\u0003\u018e\u00c7\u0000\u09bf\u09c1\u0003\u019c\u00ce\u0000\u09c0\u09bb"+
55900 		"\u0001\u0000\u0000\u0000\u09c0\u09bc\u0001\u0000\u0000\u0000\u09c0\u09bd"+
55901 		"\u0001\u0000\u0000\u0000\u09c0\u09be\u0001\u0000\u0000\u0000\u09c0\u09bf"+
55902 		"\u0001\u0000\u0000\u0000\u09c1\u0153\u0001\u0000\u0000\u0000\u09c2\u09c3"+
55903 		"\u0003H$\u0000\u09c3\u09c7\u0003\u00acV\u0000\u09c4\u09c6\u0003\u0156"+
55904 		"\u00ab\u0000\u09c5\u09c4\u0001\u0000\u0000\u0000\u09c6\u09c9\u0001\u0000"+
55905 		"\u0000\u0000\u09c7\u09c5\u0001\u0000\u0000\u0000\u09c7\u09c8\u0001\u0000"+
55906 		"\u0000\u0000\u09c8\u09ca\u0001\u0000\u0000\u0000\u09c9\u09c7\u0001\u0000"+
55907 		"\u0000\u0000\u09ca\u09cc\u0003\u0188\u00c4\u0000\u09cb\u09cd\u0003\u017e"+
55908 		"\u00bf\u0000\u09cc\u09cb\u0001\u0000\u0000\u0000\u09cc\u09cd\u0001\u0000"+
55909 		"\u0000\u0000\u09cd\u0155\u0001\u0000\u0000\u0000\u09ce\u0a04\u0005\u011e"+
55910 		"\u0000\u0000\u09cf\u09d0\u0005\u010e\u0000\u0000\u09d0\u0a04\u0003Z-\u0000"+
55911 		"\u09d1\u0a04\u0005\u0140\u0000\u0000\u09d2\u09d3\u0005\u012a\u0000\u0000"+
55912 		"\u09d3\u09d4\u0005M\u0000\u0000\u09d4\u09d5\u0005\u001f\u0000\u0000\u09d5"+
55913 		"\u09d6\u0005F\u0000\u0000\u09d6\u09d7\u0005\u0018\u0000\u0000\u09d7\u09d8"+
55914 		"\u0005\u02d3\u0000\u0000\u09d8\u0a04\u0005 \u0000\u0000\u09d9\u09da\u0005"+
55915 		"?\u0000\u0000\u09da\u09dc\u0003\u00e4r\u0000\u09db\u09d9\u0001\u0000\u0000"+
55916 		"\u0000\u09db\u09dc\u0001\u0000\u0000\u0000\u09dc\u09dd\u0001\u0000\u0000"+
55917 		"\u0000\u09dd\u09de\u0005\u009a\u0000\u0000\u09de\u0a04\u0003b1\u0000\u09df"+
55918 		"\u09e5\u0005\u0124\u0000\u0000\u09e0\u09e1\u0005\u001f\u0000\u0000\u09e1"+
55919 		"\u09e2\u0005\u02d4\u0000\u0000\u09e2\u09e3\u0005%\u0000\u0000\u09e3\u09e4"+
55920 		"\u0005\u02d4\u0000\u0000\u09e4\u09e6\u0005 \u0000\u0000\u09e5\u09e0\u0001"+
55921 		"\u0000\u0000\u0000\u09e5\u09e6\u0001\u0000\u0000\u0000\u09e6\u0a04\u0001"+
55922 		"\u0000\u0000\u0000\u09e7\u09e8\u0005k\u0000\u0000\u09e8\u09e9\u0005f\u0000"+
55923 		"\u0000\u09e9\u0a04\u0005\u013b\u0000\u0000\u09ea\u09eb\u0005\u00ff\u0000"+
55924 		"\u0000\u09eb\u09ec\u0005\u00fc\u0000\u0000\u09ec\u09ed\u0005`\u0000\u0000"+
55925 		"\u09ed\u09ee\u0005\u00f8\u0000\u0000\u09ee\u09f0\u0007$\u0000\u0000\u09ef"+
55926 		"\u09f1\u0005\u00f3\u0000\u0000\u09f0\u09ef\u0001\u0000\u0000\u0000\u09f0"+
55927 		"\u09f1\u0001\u0000\u0000\u0000\u09f1\u0a04\u0001\u0000\u0000\u0000\u09f2"+
55928 		"\u09f4\u0005k\u0000\u0000\u09f3\u09f2\u0001\u0000\u0000\u0000\u09f3\u09f4"+
55929 		"\u0001\u0000\u0000\u0000\u09f4\u09f5\u0001\u0000\u0000\u0000\u09f5\u0a04"+
55930 		"\u0005l\u0000\u0000\u09f6\u0a04\u0005\u013d\u0000\u0000\u09f7\u09f8\u0005"+
55931 		"\u011c\u0000\u0000\u09f8\u09f9\u0005M\u0000\u0000\u09f9\u0a04\u0003\u0158"+
55932 		"\u00ac\u0000\u09fa\u09ff\u0003\u015a\u00ad\u0000\u09fb\u09fc\u0005%\u0000"+
55933 		"\u0000\u09fc\u09fe\u0003\u015a\u00ad\u0000\u09fd\u09fb\u0001\u0000\u0000"+
55934 		"\u0000\u09fe\u0a01\u0001\u0000\u0000\u0000\u09ff\u09fd\u0001\u0000\u0000"+
55935 		"\u0000\u09ff\u0a00\u0001\u0000\u0000\u0000\u0a00\u0a04\u0001\u0000\u0000"+
55936 		"\u0000\u0a01\u09ff\u0001\u0000\u0000\u0000\u0a02\u0a04\u0003\u017e\u00bf"+
55937 		"\u0000\u0a03\u09ce\u0001\u0000\u0000\u0000\u0a03\u09cf\u0001\u0000\u0000"+
55938 		"\u0000\u0a03\u09d1\u0001\u0000\u0000\u0000\u0a03\u09d2\u0001\u0000\u0000"+
55939 		"\u0000\u0a03\u09db\u0001\u0000\u0000\u0000\u0a03\u09df\u0001\u0000\u0000"+
55940 		"\u0000\u0a03\u09e7\u0001\u0000\u0000\u0000\u0a03\u09ea\u0001\u0000\u0000"+
55941 		"\u0000\u0a03\u09f3\u0001\u0000\u0000\u0000\u0a03\u09f6\u0001\u0000\u0000"+
55942 		"\u0000\u0a03\u09f7\u0001\u0000\u0000\u0000\u0a03\u09fa\u0001\u0000\u0000"+
55943 		"\u0000\u0a03\u0a02\u0001\u0000\u0000\u0000\u0a04\u0157\u0001\u0000\u0000"+
55944 		"\u0000\u0a05\u0a06\u0005\u001f\u0000\u0000\u0a06\u0a07\u0005\u019a\u0000"+
55945 		"\u0000\u0a07\u0a08\u0005\u0018\u0000\u0000\u0a08\u0a09\u0003\u00e4r\u0000"+
55946 		"\u0a09\u0a0a\u0005%\u0000\u0000\u0a0a\u0a0b\u0005\u01a0\u0000\u0000\u0a0b"+
55947 		"\u0a0c\u0005\u0018\u0000\u0000\u0a0c\u0a0d\u0007%\u0000\u0000\u0a0d\u0a0e"+
55948 		"\u0005%\u0000\u0000\u0a0e\u0a0f\u0005\u0109\u0000\u0000\u0a0f\u0a10\u0005"+
55949 		"\u0018\u0000\u0000\u0a10\u0a11\u0005\u02d3\u0000\u0000\u0a11\u0a12\u0005"+
55950 		" \u0000\u0000\u0a12\u0159\u0001\u0000\u0000\u0000\u0a13\u0a14\u0005?\u0000"+
55951 		"\u0000\u0a14\u0a16\u0003X,\u0000\u0a15\u0a13\u0001\u0000\u0000\u0000\u0a15"+
55952 		"\u0a16\u0001\u0000\u0000\u0000\u0a16\u0a1a\u0001\u0000\u0000\u0000\u0a17"+
55953 		"\u0a1b\u0003\u0162\u00b1\u0000\u0a18\u0a1b\u0003\u0176\u00bb\u0000\u0a19"+
55954 		"\u0a1b\u0003\u017c\u00be\u0000\u0a1a\u0a17\u0001\u0000\u0000\u0000\u0a1a"+
55955 		"\u0a18\u0001\u0000\u0000\u0000\u0a1a\u0a19\u0001\u0000\u0000\u0000\u0a1b"+
55956 		"\u015b\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0005?\u0000\u0000\u0a1d\u0a1f"+
55957 		"\u0003X,\u0000\u0a1e\u0a1c\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0001\u0000"+
55958 		"\u0000\u0000\u0a1f\u0a23\u0001\u0000\u0000\u0000\u0a20\u0a24\u0003\u0162"+
55959 		"\u00b1\u0000\u0a21\u0a24\u0003\u015e\u00af\u0000\u0a22\u0a24\u0003\u017c"+
55960 		"\u00be\u0000\u0a23\u0a20\u0001\u0000\u0000\u0000\u0a23\u0a21\u0001\u0000"+
55961 		"\u0000\u0000\u0a23\u0a22\u0001\u0000\u0000\u0000\u0a24\u015d\u0001\u0000"+
55962 		"\u0000\u0000\u0a25\u0a26\u0005B\u0000\u0000\u0a26\u0a28\u0005C\u0000\u0000"+
55963 		"\u0a27\u0a25\u0001\u0000\u0000\u0000\u0a27\u0a28\u0001\u0000\u0000\u0000"+
55964 		"\u0a28\u0a29\u0001\u0000\u0000\u0000\u0a29\u0a2e\u0003@ \u0000\u0a2a\u0a2b"+
55965 		"\u0005\u001f\u0000\u0000\u0a2b\u0a2c\u0003H$\u0000\u0a2c\u0a2d\u0005 "+
55966 		"\u0000\u0000\u0a2d\u0a2f\u0001\u0000\u0000\u0000\u0a2e\u0a2a\u0001\u0000"+
55967 		"\u0000\u0000\u0a2e\u0a2f\u0001\u0000\u0000\u0000\u0a2f\u0a33\u0001\u0000"+
55968 		"\u0000\u0000\u0a30\u0a32\u0003\u0160\u00b0\u0000\u0a31\u0a30\u0001\u0000"+
55969 		"\u0000\u0000\u0a32\u0a35\u0001\u0000\u0000\u0000\u0a33\u0a31\u0001\u0000"+
55970 		"\u0000\u0000\u0a33\u0a34\u0001\u0000\u0000\u0000\u0a34\u015f\u0001\u0000"+
55971 		"\u0000\u0000\u0a35\u0a33\u0001\u0000\u0000\u0000\u0a36\u0a37\u0005a\u0000"+
55972 		"\u0000\u0a37\u0a3b\u00051\u0000\u0000\u0a38\u0a39\u0005\u0100\u0000\u0000"+
55973 		"\u0a39\u0a3c\u0005\u0108\u0000\u0000\u0a3a\u0a3c\u0005\u00fd\u0000\u0000"+
55974 		"\u0a3b\u0a38\u0001\u0000\u0000\u0000\u0a3b\u0a3a\u0001\u0000\u0000\u0000"+
55975 		"\u0a3c\u0a45\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0005a\u0000\u0000\u0a3e"+
55976 		"\u0a3f\u00050\u0000\u0000\u0a3f\u0a40\u0005\u0100\u0000\u0000\u0a40\u0a45"+
55977 		"\u0005\u0108\u0000\u0000\u0a41\u0a42\u0005k\u0000\u0000\u0a42\u0a43\u0005"+
55978 		"f\u0000\u0000\u0a43\u0a45\u0005\u013b\u0000\u0000\u0a44\u0a36\u0001\u0000"+
55979 		"\u0000\u0000\u0a44\u0a3d\u0001\u0000\u0000\u0000\u0a44\u0a41\u0001\u0000"+
55980 		"\u0000\u0000\u0a45\u0161\u0001\u0000\u0000\u0000\u0a46\u0a49\u0003`0\u0000"+
55981 		"\u0a47\u0a49\u0005A\u0000\u0000\u0a48\u0a46\u0001\u0000\u0000\u0000\u0a48"+
55982 		"\u0a47\u0001\u0000\u0000\u0000\u0a49\u0a4c\u0001\u0000\u0000\u0000\u0a4a"+
55983 		"\u0a4d\u0003\u0164\u00b2\u0000\u0a4b\u0a4d\u0003\u0172\u00b9\u0000\u0a4c"+
55984 		"\u0a4a\u0001\u0000\u0000\u0000\u0a4c\u0a4b\u0001\u0000\u0000\u0000\u0a4d"+
55985 		"\u0163\u0001\u0000\u0000\u0000\u0a4e\u0a50\u0003\u0166\u00b3\u0000\u0a4f"+
55986 		"\u0a4e\u0001\u0000\u0000\u0000\u0a4f\u0a50\u0001\u0000\u0000\u0000\u0a50"+
55987 		"\u0a52\u0001\u0000\u0000\u0000\u0a51\u0a53\u0003\u0168\u00b4\u0000\u0a52"+
55988 		"\u0a51\u0001\u0000\u0000\u0000\u0a52\u0a53\u0001\u0000\u0000\u0000\u0a53"+
55989 		"\u0a55\u0001\u0000\u0000\u0000\u0a54\u0a56\u0003\u016a\u00b5\u0000\u0a55"+
55990 		"\u0a54\u0001\u0000\u0000\u0000\u0a55\u0a56\u0001\u0000\u0000\u0000\u0a56"+
55991 		"\u0165\u0001\u0000\u0000\u0000\u0a57\u0a58\u0007&\u0000\u0000\u0a58\u0167"+
55992 		"\u0001\u0000\u0000\u0000\u0a59\u0a68\u0005M\u0000\u0000\u0a5a\u0a5b\u0005"+
55993 		"\u0120\u0000\u0000\u0a5b\u0a5c\u0005\u0018\u0000\u0000\u0a5c\u0a69\u0005"+
55994 		"\u02d4\u0000\u0000\u0a5d\u0a5e\u0005\u001f\u0000\u0000\u0a5e\u0a63\u0003"+
55995 		"\u00ccf\u0000\u0a5f\u0a60\u0005%\u0000\u0000\u0a60\u0a62\u0003\u00ccf"+
55996 		"\u0000\u0a61\u0a5f\u0001\u0000\u0000\u0000\u0a62\u0a65\u0001\u0000\u0000"+
55997 		"\u0000\u0a63\u0a61\u0001\u0000\u0000\u0000\u0a63\u0a64\u0001\u0000\u0000"+
55998 		"\u0000\u0a64\u0a66\u0001\u0000\u0000\u0000\u0a65\u0a63\u0001\u0000\u0000"+
55999 		"\u0000\u0a66\u0a67\u0005 \u0000\u0000\u0a67\u0a69\u0001\u0000\u0000\u0000"+
56000 		"\u0a68\u0a5a\u0001\u0000\u0000\u0000\u0a68\u0a5d\u0001\u0000\u0000\u0000"+
56001 		"\u0a69\u0169\u0001\u0000\u0000\u0000\u0a6a\u0a6e\u0003\u016c\u00b6\u0000"+
56002 		"\u0a6b\u0a6e\u0003\u016e\u00b7\u0000\u0a6c\u0a6e\u0003\u0170\u00b8\u0000"+
56003 		"\u0a6d\u0a6a\u0001\u0000\u0000\u0000\u0a6d\u0a6b\u0001\u0000\u0000\u0000"+
56004 		"\u0a6d\u0a6c\u0001\u0000\u0000\u0000\u0a6e\u016b\u0001\u0000\u0000\u0000"+
56005 		"\u0a6f\u0a70\u0005a\u0000\u0000\u0a70\u0a71\u00034\u001a\u0000\u0a71\u0a72"+
56006 		"\u0005\u001f\u0000\u0000\u0a72\u0a73\u0003H$\u0000\u0a73\u0a74\u0005 "+
56007 		"\u0000\u0000\u0a74\u016d\u0001\u0000\u0000\u0000\u0a75\u0a76\u0005a\u0000"+
56008 		"\u0000\u0a76\u0a77\u0003\u00e4r\u0000\u0a77\u016f\u0001\u0000\u0000\u0000"+
56009 		"\u0a78\u0a79\u0005a\u0000\u0000\u0a79\u0a7a\u0005\u02d3\u0000\u0000\u0a7a"+
56010 		"\u0171\u0001\u0000\u0000\u0000\u0a7b\u0a82\u0005\u010d\u0000\u0000\u0a7c"+
56011 		"\u0a7d\u0005\u010d\u0000\u0000\u0a7d\u0a7f\u0005\u0122\u0000\u0000\u0a7e"+
56012 		"\u0a80\u0003\u0174\u00ba\u0000\u0a7f\u0a7e\u0001\u0000\u0000\u0000\u0a7f"+
56013 		"\u0a80\u0001\u0000\u0000\u0000\u0a80\u0a82\u0001\u0000\u0000\u0000\u0a81"+
56014 		"\u0a7b\u0001\u0000\u0000\u0000\u0a81\u0a7c\u0001\u0000\u0000\u0000\u0a82"+
56015 		"\u0173\u0001\u0000\u0000\u0000\u0a83\u0a84\u0005M\u0000\u0000\u0a84\u0a85"+
56016 		"\u0005\u001f\u0000\u0000\u0a85\u0a86\u0005\u0198\u0000\u0000\u0a86\u0a87"+
56017 		"\u0005\u0018\u0000\u0000\u0a87\u0a88\u0005\u02d4\u0000\u0000\u0a88\u0a89"+
56018 		"\u0005 \u0000\u0000\u0a89\u0175\u0001\u0000\u0000\u0000\u0a8a\u0a8b\u0005"+
56019 		"B\u0000\u0000\u0a8b\u0a8d\u0005C\u0000\u0000\u0a8c\u0a8a\u0001\u0000\u0000"+
56020 		"\u0000\u0a8c\u0a8d\u0001\u0000\u0000\u0000\u0a8d\u0a8e\u0001\u0000\u0000"+
56021 		"\u0000\u0a8e\u0a8f\u0005\u0103\u0000\u0000\u0a8f\u0a94\u0003@ \u0000\u0a90"+
56022 		"\u0a91\u0005\u001f\u0000\u0000\u0a91\u0a92\u0003H$\u0000\u0a92\u0a93\u0005"+
56023 		" \u0000\u0000\u0a93\u0a95\u0001\u0000\u0000\u0000\u0a94\u0a90\u0001\u0000"+
56024 		"\u0000\u0000\u0a94\u0a95\u0001\u0000\u0000\u0000\u0a95\u0a99\u0001\u0000"+
56025 		"\u0000\u0000\u0a96\u0a98\u0003\u0178\u00bc\u0000\u0a97\u0a96\u0001\u0000"+
56026 		"\u0000\u0000\u0a98\u0a9b\u0001\u0000\u0000\u0000\u0a99\u0a97\u0001\u0000"+
56027 		"\u0000\u0000\u0a99\u0a9a\u0001\u0000\u0000\u0000\u0a9a\u0177\u0001\u0000"+
56028 		"\u0000\u0000\u0a9b\u0a99\u0001\u0000\u0000\u0000\u0a9c\u0a9d\u0005a\u0000"+
56029 		"\u0000\u0a9d\u0a9e\u0007\'\u0000\u0000\u0a9e\u0aa3\u0003\u017a\u00bd\u0000"+
56030 		"\u0a9f\u0aa0\u0005k\u0000\u0000\u0aa0\u0aa1\u0005f\u0000\u0000\u0aa1\u0aa3"+
56031 		"\u0005\u013b\u0000\u0000\u0aa2\u0a9c\u0001\u0000\u0000\u0000\u0aa2\u0a9f"+
56032 		"\u0001\u0000\u0000\u0000\u0aa3\u0179\u0001\u0000\u0000\u0000\u0aa4\u0aa5"+
56033 		"\u0005\u0100\u0000\u0000\u0aa5\u0aaa\u0005\u0108\u0000\u0000\u0aa6\u0aaa"+
56034 		"\u0005\u00fd\u0000\u0000\u0aa7\u0aa8\u0005:\u0000\u0000\u0aa8\u0aaa\u0007"+
56035 		"(\u0000\u0000\u0aa9\u0aa4\u0001\u0000\u0000\u0000\u0aa9\u0aa6\u0001\u0000"+
56036 		"\u0000\u0000\u0aa9\u0aa7\u0001\u0000\u0000\u0000\u0aaa\u017b\u0001\u0000"+
56037 		"\u0000\u0000\u0aab\u0aaf\u0005\u00fe\u0000\u0000\u0aac\u0aad\u0005k\u0000"+
56038 		"\u0000\u0aad\u0aae\u0005f\u0000\u0000\u0aae\u0ab0\u0005\u013b\u0000\u0000"+
56039 		"\u0aaf\u0aac\u0001\u0000\u0000\u0000\u0aaf\u0ab0\u0001\u0000\u0000\u0000"+
56040 		"\u0ab0\u0ab1\u0001\u0000\u0000\u0000\u0ab1\u0ab2\u0005\u001f\u0000\u0000"+
56041 		"\u0ab2\u0ab3\u0003b1\u0000\u0ab3\u0ab4\u0005 \u0000\u0000\u0ab4\u017d"+
56042 		"\u0001\u0000\u0000\u0000\u0ab5\u0ab6\u0005>\u0000\u0000\u0ab6\u0ab8\u0003"+
56043 		"V+\u0000\u0ab7\u0ab9\u0003\u0166\u00b3\u0000\u0ab8\u0ab7\u0001\u0000\u0000"+
56044 		"\u0000\u0ab8\u0ab9\u0001\u0000\u0000\u0000\u0ab9\u0abb\u0001\u0000\u0000"+
56045 		"\u0000\u0aba\u0abc\u0003\u0180\u00c0\u0000\u0abb\u0aba\u0001\u0000\u0000"+
56046 		"\u0000\u0abb\u0abc\u0001\u0000\u0000\u0000\u0abc\u0abe\u0001\u0000\u0000"+
56047 		"\u0000\u0abd\u0abf\u0003\u0182\u00c1\u0000\u0abe\u0abd\u0001\u0000\u0000"+
56048 		"\u0000\u0abe\u0abf\u0001\u0000\u0000\u0000\u0abf\u0ac1\u0001\u0000\u0000"+
56049 		"\u0000\u0ac0\u0ac2\u0003\u0186\u00c3\u0000\u0ac1\u0ac0\u0001\u0000\u0000"+
56050 		"\u0000\u0ac1\u0ac2\u0001\u0000\u0000\u0000\u0ac2\u017f\u0001\u0000\u0000"+
56051 		"\u0000\u0ac3\u0ac4\u0005M\u0000\u0000\u0ac4\u0ac5\u0005\u001f\u0000\u0000"+
56052 		"\u0ac5\u0aca\u0003\u00ccf\u0000\u0ac6\u0ac7\u0005%\u0000\u0000\u0ac7\u0ac9"+
56053 		"\u0003\u00ccf\u0000\u0ac8\u0ac6\u0001\u0000\u0000\u0000\u0ac9\u0acc\u0001"+
56054 		"\u0000\u0000\u0000\u0aca\u0ac8\u0001\u0000\u0000\u0000\u0aca\u0acb\u0001"+
56055 		"\u0000\u0000\u0000\u0acb\u0acd\u0001\u0000\u0000\u0000\u0acc\u0aca\u0001"+
56056 		"\u0000\u0000\u0000\u0acd\u0ace\u0005 \u0000\u0000\u0ace\u0181\u0001\u0000"+
56057 		"\u0000\u0000\u0acf\u0ad3\u0003\u016c\u00b6\u0000\u0ad0\u0ad3\u0003\u016e"+
56058 		"\u00b7\u0000\u0ad1\u0ad3\u0003\u0184\u00c2\u0000\u0ad2\u0acf\u0001\u0000"+
56059 		"\u0000\u0000\u0ad2\u0ad0\u0001\u0000\u0000\u0000\u0ad2\u0ad1\u0001\u0000"+
56060 		"\u0000\u0000\u0ad3\u0183\u0001\u0000\u0000\u0000\u0ad4\u0ad5\u0005a\u0000"+
56061 		"\u0000\u0ad5\u0ad6\u0005\u009a\u0000\u0000\u0ad6\u0185\u0001\u0000\u0000"+
56062 		"\u0000\u0ad7\u0adb\u0005\u01b2\u0000\u0000\u0ad8\u0adc\u0003\u00e4r\u0000"+
56063 		"\u0ad9\u0adc\u00034\u001a\u0000\u0ada\u0adc\u0005\u02d3\u0000\u0000\u0adb"+
56064 		"\u0ad8\u0001\u0000\u0000\u0000\u0adb\u0ad9\u0001\u0000\u0000\u0000\u0adb"+
56065 		"\u0ada\u0001\u0000\u0000\u0000\u0adc\u0187\u0001\u0000\u0000\u0000\u0add"+
56066 		"\u0ae2\u0003\u015a\u00ad\u0000\u0ade\u0adf\u0005%\u0000\u0000\u0adf\u0ae1"+
56067 		"\u0003\u015a\u00ad\u0000\u0ae0\u0ade\u0001\u0000\u0000\u0000\u0ae1\u0ae4"+
56068 		"\u0001\u0000\u0000\u0000\u0ae2\u0ae0\u0001\u0000\u0000\u0000\u0ae2\u0ae3"+
56069 		"\u0001\u0000\u0000\u0000\u0ae3\u0ae6\u0001\u0000\u0000\u0000\u0ae4\u0ae2"+
56070 		"\u0001\u0000\u0000\u0000\u0ae5\u0add\u0001\u0000\u0000\u0000\u0ae5\u0ae6"+
56071 		"\u0001\u0000\u0000\u0000\u0ae6\u0189\u0001\u0000\u0000\u0000\u0ae7\u0ae8"+
56072 		"\u0003H$\u0000\u0ae8\u0ae9\u0005`\u0000\u0000\u0ae9\u0aef\u0003b1\u0000"+
56073 		"\u0aea\u0aed\u0005\u0135\u0000\u0000\u0aeb\u0aec\u0005k\u0000\u0000\u0aec"+
56074 		"\u0aee\u0005l\u0000\u0000\u0aed\u0aeb\u0001\u0000\u0000\u0000\u0aed\u0aee"+
56075 		"\u0001\u0000\u0000\u0000\u0aee\u0af0\u0001\u0000\u0000\u0000\u0aef\u0aea"+
56076 		"\u0001\u0000\u0000\u0000\u0aef\u0af0\u0001\u0000\u0000\u0000\u0af0\u0af2"+
56077 		"\u0001\u0000\u0000\u0000\u0af1\u0af3\u0003\u015c\u00ae\u0000\u0af2\u0af1"+
56078 		"\u0001\u0000\u0000\u0000\u0af2\u0af3\u0001\u0000\u0000\u0000\u0af3\u018b"+
56079 		"\u0001\u0000\u0000\u0000\u0af4\u0af5\u0003\u00e4r\u0000\u0af5\u0af6\u0005"+
56080 		"\u02d1\u0000\u0000\u0af6\u0af7\u0005\u019b\u0000\u0000\u0af7\u0af8\u0005"+
56081 		"f\u0000\u0000\u0af8\u0af9\u0005\u0197\u0000\u0000\u0af9\u018d\u0001\u0000"+
56082 		"\u0000\u0000\u0afa\u0afb\u0005?\u0000\u0000\u0afb\u0afd\u0003X,\u0000"+
56083 		"\u0afc\u0afa\u0001\u0000\u0000\u0000\u0afc\u0afd\u0001\u0000\u0000\u0000"+
56084 		"\u0afd\u0b01\u0001\u0000\u0000\u0000\u0afe\u0b02\u0003\u0190\u00c8\u0000"+
56085 		"\u0aff\u0b02\u0003\u019a\u00cd\u0000\u0b00\u0b02\u0003\u017c\u00be\u0000"+
56086 		"\u0b01\u0afe\u0001\u0000\u0000\u0000\u0b01\u0aff\u0001\u0000\u0000\u0000"+
56087 		"\u0b01\u0b00\u0001\u0000\u0000\u0000\u0b02\u018f\u0001\u0000\u0000\u0000"+
56088 		"\u0b03\u0b06\u0003\u0192\u00c9\u0000\u0b04\u0b07\u0003\u0194\u00ca\u0000"+
56089 		"\u0b05\u0b07\u0003\u0196\u00cb\u0000\u0b06\u0b04\u0001\u0000\u0000\u0000"+
56090 		"\u0b06\u0b05\u0001\u0000\u0000\u0000\u0b07\u0191\u0001\u0000\u0000\u0000"+
56091 		"\u0b08\u0b0b\u0003`0\u0000\u0b09\u0b0b\u0005A\u0000\u0000\u0b0a\u0b08"+
56092 		"\u0001\u0000\u0000\u0000\u0b0a\u0b09\u0001\u0000\u0000\u0000\u0b0b\u0193"+
56093 		"\u0001\u0000\u0000\u0000\u0b0c\u0b0e\u0003\u0166\u00b3\u0000\u0b0d\u0b0c"+
56094 		"\u0001\u0000\u0000\u0000\u0b0d\u0b0e\u0001\u0000\u0000\u0000\u0b0e\u0b0f"+
56095 		"\u0001\u0000\u0000\u0000\u0b0f\u0b11\u0003P(\u0000\u0b10\u0b12\u0003\u0168"+
56096 		"\u00b4\u0000\u0b11\u0b10\u0001\u0000\u0000\u0000\u0b11\u0b12\u0001\u0000"+
56097 		"\u0000\u0000\u0b12\u0b14\u0001\u0000\u0000\u0000\u0b13\u0b15\u0003\u016a"+
56098 		"\u00b5\u0000\u0b14\u0b13\u0001\u0000\u0000\u0000\u0b14\u0b15\u0001\u0000"+
56099 		"\u0000\u0000\u0b15\u0195\u0001\u0000\u0000\u0000\u0b16\u0b19\u0005\u010d"+
56100 		"\u0000\u0000\u0b17\u0b1a\u0003P(\u0000\u0b18\u0b1a\u0003\u0198\u00cc\u0000"+
56101 		"\u0b19\u0b17\u0001\u0000\u0000\u0000\u0b19\u0b18\u0001\u0000\u0000\u0000"+
56102 		"\u0b1a\u0197\u0001\u0000\u0000\u0000\u0b1b\u0b1c\u0005\u0122\u0000\u0000"+
56103 		"\u0b1c\u0b1d\u0003P(\u0000\u0b1d\u0b1e\u0003\u0174\u00ba\u0000\u0b1e\u0199"+
56104 		"\u0001\u0000\u0000\u0000\u0b1f\u0b20\u0005B\u0000\u0000\u0b20\u0b22\u0005"+
56105 		"C\u0000\u0000\u0b21\u0b1f\u0001\u0000\u0000\u0000\u0b21\u0b22\u0001\u0000"+
56106 		"\u0000\u0000\u0b22\u0b23\u0001\u0000\u0000\u0000\u0b23\u0b24\u0003P(\u0000"+
56107 		"\u0b24\u0b25\u0005\u0103\u0000\u0000\u0b25\u0b26\u0003@ \u0000\u0b26\u0b2a"+
56108 		"\u0003P(\u0000\u0b27\u0b29\u0003\u0178\u00bc\u0000\u0b28\u0b27\u0001\u0000"+
56109 		"\u0000\u0000\u0b29\u0b2c\u0001\u0000\u0000\u0000\u0b2a\u0b28\u0001\u0000"+
56110 		"\u0000\u0000\u0b2a\u0b2b\u0001\u0000\u0000\u0000\u0b2b\u019b\u0001\u0000"+
56111 		"\u0000\u0000\u0b2c\u0b2a\u0001\u0000\u0000\u0000\u0b2d\u0b2e\u0005>\u0000"+
56112 		"\u0000\u0b2e\u0b2f\u0003V+\u0000\u0b2f\u0b32\u0003\u019e\u00cf\u0000\u0b30"+
56113 		"\u0b31\u0005M\u0000\u0000\u0b31\u0b33\u0003\u01a0\u00d0\u0000\u0b32\u0b30"+
56114 		"\u0001\u0000\u0000\u0000\u0b32\u0b33\u0001\u0000\u0000\u0000\u0b33\u0b35"+
56115 		"\u0001\u0000\u0000\u0000\u0b34\u0b36\u0003\u0182\u00c1\u0000\u0b35\u0b34"+
56116 		"\u0001\u0000\u0000\u0000\u0b35\u0b36\u0001\u0000\u0000\u0000\u0b36\u0b38"+
56117 		"\u0001\u0000\u0000\u0000\u0b37\u0b39\u0003\u0186\u00c3\u0000\u0b38\u0b37"+
56118 		"\u0001\u0000\u0000\u0000\u0b38\u0b39\u0001\u0000\u0000\u0000\u0b39\u019d"+
56119 		"\u0001\u0000\u0000\u0000\u0b3a\u0b3c\u0003\u0166\u00b3\u0000\u0b3b\u0b3a"+
56120 		"\u0001\u0000\u0000\u0000\u0b3b\u0b3c\u0001\u0000\u0000\u0000\u0b3c\u0b3d"+
56121 		"\u0001\u0000\u0000\u0000\u0b3d\u0b46\u0003P(\u0000\u0b3e\u0b3f\u0005\u010c"+
56122 		"\u0000\u0000\u0b3f\u0b46\u0005\u010f\u0000\u0000\u0b40\u0b42\u0005\u010d"+
56123 		"\u0000\u0000\u0b41\u0b40\u0001\u0000\u0000\u0000\u0b41\u0b42\u0001\u0000"+
56124 		"\u0000\u0000\u0b42\u0b43\u0001\u0000\u0000\u0000\u0b43\u0b44\u0005\u010f"+
56125 		"\u0000\u0000\u0b44\u0b46\u0003P(\u0000\u0b45\u0b3b\u0001\u0000\u0000\u0000"+
56126 		"\u0b45\u0b3e\u0001\u0000\u0000\u0000\u0b45\u0b41\u0001\u0000\u0000\u0000"+
56127 		"\u0b46\u019f\u0001\u0000\u0000\u0000\u0b47\u0b48\u0005\u001f\u0000\u0000"+
56128 		"\u0b48\u0b4d\u0003\u00ccf\u0000\u0b49\u0b4a\u0005%\u0000\u0000\u0b4a\u0b4c"+
56129 		"\u0003\u00ccf\u0000\u0b4b\u0b49\u0001\u0000\u0000\u0000\u0b4c\u0b4f\u0001"+
56130 		"\u0000\u0000\u0000\u0b4d\u0b4b\u0001\u0000\u0000\u0000\u0b4d\u0b4e\u0001"+
56131 		"\u0000\u0000\u0000\u0b4e\u0b50\u0001\u0000\u0000\u0000\u0b4f\u0b4d\u0001"+
56132 		"\u0000\u0000\u0000\u0b50\u0b51\u0005 \u0000\u0000\u0b51\u01a1\u0001\u0000"+
56133 		"\u0000\u0000\u0b52\u0b53\u0005\u0134\u0000\u0000\u0b53\u0b54\u0005f\u0000"+
56134 		"\u0000\u0b54\u0b55\u0005\u01a1\u0000\u0000\u0b55\u0b56\u0005\u001f\u0000"+
56135 		"\u0000\u0b56\u0b57\u0003H$\u0000\u0b57\u0b58\u0005%\u0000\u0000\u0b58"+
56136 		"\u0b59\u0003H$\u0000\u0b59\u0b5a\u0005 \u0000\u0000\u0b5a\u01a3\u0001"+
56137 		"\u0000\u0000\u0000\u0b5b\u0b63\u0005a\u0000\u0000\u0b5c\u0b5d\u00034\u001a"+
56138 		"\u0000\u0b5d\u0b5e\u0005\u001f\u0000\u0000\u0b5e\u0b5f\u0003H$\u0000\u0b5f"+
56139 		"\u0b60\u0005 \u0000\u0000\u0b60\u0b64\u0001\u0000\u0000\u0000\u0b61\u0b64"+
56140 		"\u0003\u00e4r\u0000\u0b62\u0b64\u0005\u02d3\u0000\u0000\u0b63\u0b5c\u0001"+
56141 		"\u0000\u0000\u0000\u0b63\u0b61\u0001\u0000\u0000\u0000\u0b63\u0b62\u0001"+
56142 		"\u0000\u0000\u0000\u0b64\u0b66\u0001\u0000\u0000\u0000\u0b65\u0b5b\u0001"+
56143 		"\u0000\u0000\u0000\u0b65\u0b66\u0001\u0000\u0000\u0000\u0b66\u01a5\u0001"+
56144 		"\u0000\u0000\u0000\u0b67\u0b6a\u0005\u01a3\u0000\u0000\u0b68\u0b6b\u0003"+
56145 		"\u00e4r\u0000\u0b69\u0b6b\u0005\u02d3\u0000\u0000\u0b6a\u0b68\u0001\u0000"+
56146 		"\u0000\u0000\u0b6a\u0b69\u0001\u0000\u0000\u0000\u0b6b\u0b6d\u0001\u0000"+
56147 		"\u0000\u0000\u0b6c\u0b67\u0001\u0000\u0000\u0000\u0b6c\u0b6d\u0001\u0000"+
56148 		"\u0000\u0000\u0b6d\u0b75\u0001\u0000\u0000\u0000\u0b6e\u0b6f\u0005\u01b2"+
56149 		"\u0000\u0000\u0b6f\u0b74\u00034\u001a\u0000\u0b70\u0b71\u0003\u00e4r\u0000"+
56150 		"\u0b71\u0b72\u0005\u02d3\u0000\u0000\u0b72\u0b74\u0001\u0000\u0000\u0000"+
56151 		"\u0b73\u0b6e\u0001\u0000\u0000\u0000\u0b73\u0b70\u0001\u0000\u0000\u0000"+
56152 		"\u0b74\u0b76\u0001\u0000\u0000\u0000\u0b75\u0b73\u0001\u0000\u0000\u0000"+
56153 		"\u0b75\u0b76\u0001\u0000\u0000\u0000\u0b76\u0b79\u0001\u0000\u0000\u0000"+
56154 		"\u0b77\u0b78\u0005M\u0000\u0000\u0b78\u0b7a\u0003\u01a8\u00d4\u0000\u0b79"+
56155 		"\u0b77\u0001\u0000\u0000\u0000\u0b79\u0b7a\u0001\u0000\u0000\u0000\u0b7a"+
56156 		"\u01a7\u0001\u0000\u0000\u0000\u0b7b\u0b7c\u0005\u001f\u0000\u0000\u0b7c"+
56157 		"\u0b81\u0003\u01aa\u00d5\u0000\u0b7d\u0b7e\u0005%\u0000\u0000\u0b7e\u0b80"+
56158 		"\u0003\u01aa\u00d5\u0000\u0b7f\u0b7d\u0001\u0000\u0000\u0000\u0b80\u0b83"+
56159 		"\u0001\u0000\u0000\u0000\u0b81\u0b7f\u0001\u0000\u0000\u0000\u0b81\u0b82"+
56160 		"\u0001\u0000\u0000\u0000\u0b82\u0b84\u0001\u0000\u0000\u0000\u0b83\u0b81"+
56161 		"\u0001\u0000\u0000\u0000\u0b84\u0b85\u0005 \u0000\u0000\u0b85\u01a9\u0001"+
56162 		"\u0000\u0000\u0000\u0b86\u0b87\u0005\u019e\u0000\u0000\u0b87\u0b88\u0005"+
56163 		"\u0018\u0000\u0000\u0b88\u0b8f\u0007)\u0000\u0000\u0b89\u0b8a\u0005a\u0000"+
56164 		"\u0000\u0b8a\u0b8b\u0005\u00f6\u0000\u0000\u0b8b\u0b8c\u0005\u001f\u0000"+
56165 		"\u0000\u0b8c\u0b8d\u0003\u00dam\u0000\u0b8d\u0b8e\u0005 \u0000\u0000\u0b8e"+
56166 		"\u0b90\u0001\u0000\u0000\u0000\u0b8f\u0b89\u0001\u0000\u0000\u0000\u0b8f"+
56167 		"\u0b90\u0001\u0000\u0000\u0000\u0b90\u0bb9\u0001\u0000\u0000\u0000\u0b91"+
56168 		"\u0b92\u0005\u01b4\u0000\u0000\u0b92\u0b93\u0005\u0018\u0000\u0000\u0b93"+
56169 		"\u0bb9\u0003\u00e4r\u0000\u0b94\u0b95\u0005\u01b3\u0000\u0000\u0b95\u0b98"+
56170 		"\u0005\u0018\u0000\u0000\u0b96\u0b99\u0003Z-\u0000\u0b97\u0b99\u0005\u019d"+
56171 		"\u0000\u0000\u0b98\u0b96\u0001\u0000\u0000\u0000\u0b98\u0b97\u0001\u0000"+
56172 		"\u0000\u0000\u0b99\u0bb9\u0001\u0000\u0000\u0000\u0b9a\u0b9b\u0005\u01b6"+
56173 		"\u0000\u0000\u0b9b\u0b9c\u0005\u0018\u0000\u0000\u0b9c\u0bb9\u0003\u00e4"+
56174 		"r\u0000\u0b9d\u0b9e\u0005\u01b7\u0000\u0000\u0b9e\u0b9f\u0005\u0018\u0000"+
56175 		"\u0000\u0b9f\u0bb9\u0003\u00e4r\u0000\u0ba0\u0ba1\u0005\u01b5\u0000\u0000"+
56176 		"\u0ba1\u0ba2\u0005\u0018\u0000\u0000\u0ba2\u0bb9\u0003\u00e4r\u0000\u0ba3"+
56177 		"\u0ba4\u0005\u01a2\u0000\u0000\u0ba4\u0ba5\u0005\u0018\u0000\u0000\u0ba5"+
56178 		"\u0ba7\u0005a\u0000\u0000\u0ba6\u0ba8\u0003\u0202\u0101\u0000\u0ba7\u0ba6"+
56179 		"\u0001\u0000\u0000\u0000\u0ba7\u0ba8\u0001\u0000\u0000\u0000\u0ba8\u0bb9"+
56180 		"\u0001\u0000\u0000\u0000\u0ba9\u0baa\u0005\u01b1\u0000\u0000\u0baa\u0bb1"+
56181 		"\u0005\u0018\u0000\u0000\u0bab\u0bad\u0005a\u0000\u0000\u0bac\u0bae\u0003"+
56182 		"\u01ae\u00d7\u0000\u0bad\u0bac\u0001\u0000\u0000\u0000\u0bad\u0bae\u0001"+
56183 		"\u0000\u0000\u0000\u0bae\u0bb2\u0001\u0000\u0000\u0000\u0baf\u0bb0\u0005"+
56184 		"b\u0000\u0000\u0bb0\u0bb2\u0003\u01b2\u00d9\u0000\u0bb1\u0bab\u0001\u0000"+
56185 		"\u0000\u0000\u0bb1\u0baf\u0001\u0000\u0000\u0000\u0bb2\u0bb9\u0001\u0000"+
56186 		"\u0000\u0000\u0bb3\u0bb9\u0003\u01b4\u00da\u0000\u0bb4\u0bb9\u0003\u01b6"+
56187 		"\u00db\u0000\u0bb5\u0bb9\u0003\u01b8\u00dc\u0000\u0bb6\u0bb9\u0003\u01ac"+
56188 		"\u00d6\u0000\u0bb7\u0bb9\u0003\u01ba\u00dd\u0000\u0bb8\u0b86\u0001\u0000"+
56189 		"\u0000\u0000\u0bb8\u0b91\u0001\u0000\u0000\u0000\u0bb8\u0b94\u0001\u0000"+
56190 		"\u0000\u0000\u0bb8\u0b9a\u0001\u0000\u0000\u0000\u0bb8\u0b9d\u0001\u0000"+
56191 		"\u0000\u0000\u0bb8\u0ba0\u0001\u0000\u0000\u0000\u0bb8\u0ba3\u0001\u0000"+
56192 		"\u0000\u0000\u0bb8\u0ba9\u0001\u0000\u0000\u0000\u0bb8\u0bb3\u0001\u0000"+
56193 		"\u0000\u0000\u0bb8\u0bb4\u0001\u0000\u0000\u0000\u0bb8\u0bb5\u0001\u0000"+
56194 		"\u0000\u0000\u0bb8\u0bb6\u0001\u0000\u0000\u0000\u0bb8\u0bb7\u0001\u0000"+
56195 		"\u0000\u0000\u0bb9\u01ab\u0001\u0000\u0000\u0000\u0bba\u0bbb\u0005\u01f3"+
56196 		"\u0000\u0000\u0bbb\u0bbc\u0005\u0018\u0000\u0000\u0bbc\u0bbd\u0005a\u0000"+
56197 		"\u0000\u0bbd\u0bbe\u0005\u001f\u0000\u0000\u0bbe\u0bbf\u0005\u01f4\u0000"+
56198 		"\u0000\u0bbf\u0bc0\u0005\u0018\u0000\u0000\u0bc0\u0bc1\u0003H$\u0000\u0bc1"+
56199 		"\u0bc2\u0005%\u0000\u0000\u0bc2\u0bc3\u0005\u01f5\u0000\u0000\u0bc3\u0bc4"+
56200 		"\u0005\u0018\u0000\u0000\u0bc4\u0bc5\u0003\u01f4\u00fa\u0000\u0bc5\u01ad"+
56201 		"\u0001\u0000\u0000\u0000\u0bc6\u0bc7\u0005\u001f\u0000\u0000\u0bc7\u0bcc"+
56202 		"\u0003\u01b0\u00d8\u0000\u0bc8\u0bc9\u0005%\u0000\u0000\u0bc9\u0bcb\u0003"+
56203 		"\u01b0\u00d8\u0000\u0bca\u0bc8\u0001\u0000\u0000\u0000\u0bcb\u0bce\u0001"+
56204 		"\u0000\u0000\u0000\u0bcc\u0bca\u0001\u0000\u0000\u0000\u0bcc\u0bcd\u0001"+
56205 		"\u0000\u0000\u0000\u0bcd\u0bcf\u0001\u0000\u0000\u0000\u0bce\u0bcc\u0001"+
56206 		"\u0000\u0000\u0000\u0bcf\u0bd0\u0005 \u0000\u0000\u0bd0\u01af\u0001\u0000"+
56207 		"\u0000\u0000\u0bd1\u0bd2\u0005\u01b8\u0000\u0000\u0bd2\u0bd5\u0005\u0018"+
56208 		"\u0000\u0000\u0bd3\u0bd6\u0005l\u0000\u0000\u0bd4\u0bd6\u0003v;\u0000"+
56209 		"\u0bd5\u0bd3\u0001\u0000\u0000\u0000\u0bd5\u0bd4\u0001\u0000\u0000\u0000"+
56210 		"\u0bd6\u0bd7\u0001\u0000\u0000\u0000\u0bd7\u0bd9\u0005%\u0000\u0000\u0bd8"+
56211 		"\u0bd1\u0001\u0000\u0000\u0000\u0bd8\u0bd9\u0001\u0000\u0000\u0000\u0bd9"+
56212 		"\u0bda\u0001\u0000\u0000\u0000\u0bda\u0bdb\u0005\u01af\u0000\u0000\u0bdb"+
56213 		"\u0bdc\u0005\u0018\u0000\u0000\u0bdc\u0bdd\u0007*\u0000\u0000\u0bdd\u01b1"+
56214 		"\u0001\u0000\u0000\u0000\u0bde\u0bdf\u0005\u001f\u0000\u0000\u0bdf\u0be0"+
56215 		"\u0005\u01af\u0000\u0000\u0be0\u0be1\u0005\u0018\u0000\u0000\u0be1\u0be2"+
56216 		"\u0005\u0133\u0000\u0000\u0be2\u0be3\u0005 \u0000\u0000\u0be3\u01b3\u0001"+
56217 		"\u0000\u0000\u0000\u0be4\u0be5\u0005\u01ae\u0000\u0000\u0be5\u0be6\u0005"+
56218 		"\u0018\u0000\u0000\u0be6\u0bf1\u0005a\u0000\u0000\u0be7\u0be8\u0005\u011b"+
56219 		"\u0000\u0000\u0be8\u0be9\u0005\u0018\u0000\u0000\u0be9\u0bf1\u0007+\u0000"+
56220 		"\u0000\u0bea\u0beb\u0005\u01a2\u0000\u0000\u0beb\u0bec\u0005\u0018\u0000"+
56221 		"\u0000\u0bec\u0bee\u0005a\u0000\u0000\u0bed\u0bef\u0003\u0202\u0101\u0000"+
56222 		"\u0bee\u0bed\u0001\u0000\u0000\u0000\u0bee\u0bef\u0001\u0000\u0000\u0000"+
56223 		"\u0bef\u0bf1\u0001\u0000\u0000\u0000\u0bf0\u0be4\u0001\u0000\u0000\u0000"+
56224 		"\u0bf0\u0be7\u0001\u0000\u0000\u0000\u0bf0\u0bea\u0001\u0000\u0000\u0000"+
56225 		"\u0bf1\u01b5\u0001\u0000\u0000\u0000\u0bf2\u0bf3\u0005\u0119\u0000\u0000"+
56226 		"\u0bf3\u0bfb\u0005\u0018\u0000\u0000\u0bf4\u0bf5\u0005\u0122\u0000\u0000"+
56227 		"\u0bf5\u0bf6\u0005\u001f\u0000\u0000\u0bf6\u0bf7\u0003H$\u0000\u0bf7\u0bf8"+
56228 		"\u0005 \u0000\u0000\u0bf8\u0bfc\u0001\u0000\u0000\u0000\u0bf9\u0bfc\u0005"+
56229 		"\u01a7\u0000\u0000\u0bfa\u0bfc\u0005\u013a\u0000\u0000\u0bfb\u0bf4\u0001"+
56230 		"\u0000\u0000\u0000\u0bfb\u0bf9\u0001\u0000\u0000\u0000\u0bfb\u0bfa\u0001"+
56231 		"\u0000\u0000\u0000\u0bfc\u01b7\u0001\u0000\u0000\u0000\u0bfd\u0bfe\u0005"+
56232 		"\u010c\u0000\u0000\u0bfe\u0bff\u0005\u010f\u0000\u0000\u0bff\u0c1a\u0005"+
56233 		">\u0000\u0000\u0c00\u0c01\u0005\u010c\u0000\u0000\u0c01\u0c02\u0005\u010f"+
56234 		"\u0000\u0000\u0c02\u0c03\u0005>\u0000\u0000\u0c03\u0c04\u0005u\u0000\u0000"+
56235 		"\u0c04\u0c1a\u0003P(\u0000\u0c05\u0c1a\u0005\u0123\u0000\u0000\u0c06\u0c07"+
56236 		"\u0005\u010c\u0000\u0000\u0c07\u0c08\u0005>\u0000\u0000\u0c08\u0c09\u0005"+
56237 		"\u001f\u0000\u0000\u0c09\u0c0b\u0003H$\u0000\u0c0a\u0c0c\u0007\u0011\u0000"+
56238 		"\u0000\u0c0b\u0c0a\u0001\u0000\u0000\u0000\u0c0b\u0c0c\u0001\u0000\u0000"+
56239 		"\u0000\u0c0c\u0c14\u0001\u0000\u0000\u0000\u0c0d\u0c0e\u0005%\u0000\u0000"+
56240 		"\u0c0e\u0c10\u0003H$\u0000\u0c0f\u0c11\u0007\u0011\u0000\u0000\u0c10\u0c0f"+
56241 		"\u0001\u0000\u0000\u0000\u0c10\u0c11\u0001\u0000\u0000\u0000\u0c11\u0c13"+
56242 		"\u0001\u0000\u0000\u0000\u0c12\u0c0d\u0001\u0000\u0000\u0000\u0c13\u0c16"+
56243 		"\u0001\u0000\u0000\u0000\u0c14\u0c12\u0001\u0000\u0000\u0000\u0c14\u0c15"+
56244 		"\u0001\u0000\u0000\u0000\u0c15\u0c17\u0001\u0000\u0000\u0000\u0c16\u0c14"+
56245 		"\u0001\u0000\u0000\u0000\u0c17\u0c18\u0005 \u0000\u0000\u0c18\u0c1a\u0001"+
56246 		"\u0000\u0000\u0000\u0c19\u0bfd\u0001\u0000\u0000\u0000\u0c19\u0c00\u0001"+
56247 		"\u0000\u0000\u0000\u0c19\u0c05\u0001\u0000\u0000\u0000\u0c19\u0c06\u0001"+
56248 		"\u0000\u0000\u0000\u0c1a\u01b9\u0001\u0000\u0000\u0000\u0c1b\u0c1c\u0005"+
56249 		"\u00f5\u0000\u0000\u0c1c\u0c1d\u0005\u001f\u0000\u0000\u0c1d\u0c1e\u0003"+
56250 		"H$\u0000\u0c1e\u0c20\u0005\u0138\u0000\u0000\u0c1f\u0c21\u0007,\u0000"+
56251 		"\u0000\u0c20\u0c1f\u0001\u0000\u0000\u0000\u0c20\u0c21\u0001\u0000\u0000"+
56252 		"\u0000\u0c21\u0c22\u0001\u0000\u0000\u0000\u0c22\u0c23\u0005f\u0000\u0000"+
56253 		"\u0c23\u0c24\u0005L\u0000\u0000\u0c24\u0c25\u0005\u001f\u0000\u0000\u0c25"+
56254 		"\u0c2a\u0003t:\u0000\u0c26\u0c27\u0005%\u0000\u0000\u0c27\u0c29\u0003"+
56255 		"t:\u0000\u0c28\u0c26\u0001\u0000\u0000\u0000\u0c29\u0c2c\u0001\u0000\u0000"+
56256 		"\u0000\u0c2a\u0c28\u0001\u0000\u0000\u0000\u0c2a\u0c2b\u0001\u0000\u0000"+
56257 		"\u0000\u0c2b\u0c2d\u0001\u0000\u0000\u0000\u0c2c\u0c2a\u0001\u0000\u0000"+
56258 		"\u0000\u0c2d\u0c2e\u0005 \u0000\u0000\u0c2e\u0c2f\u0005 \u0000\u0000\u0c2f"+
56259 		"\u01bb\u0001\u0000\u0000\u0000\u0c30\u0c32\u0005A\u0000\u0000\u0c31\u0c30"+
56260 		"\u0001\u0000\u0000\u0000\u0c31\u0c32\u0001\u0000\u0000\u0000\u0c32\u0c34"+
56261 		"\u0001\u0000\u0000\u0000\u0c33\u0c35\u0003\u0166\u00b3\u0000\u0c34\u0c33"+
56262 		"\u0001\u0000\u0000\u0000\u0c34\u0c35\u0001\u0000\u0000\u0000\u0c35\u01bd"+
56263 		"\u0001\u0000\u0000\u0000\u0c36\u0c40\u0003\u01c0\u00e0\u0000\u0c37\u0c40"+
56264 		"\u0003\u01c2\u00e1\u0000\u0c38\u0c40\u0003\u01d2\u00e9\u0000\u0c39\u0c40"+
56265 		"\u0003\u01e2\u00f1\u0000\u0c3a\u0c40\u0003\u01e4\u00f2\u0000\u0c3b\u0c40"+
56266 		"\u0003\u01e6\u00f3\u0000\u0c3c\u0c40\u0003\u01e8\u00f4\u0000\u0c3d\u0c40"+
56267 		"\u0003\u0200\u0100\u0000\u0c3e\u0c40\u0005\u0139\u0000\u0000\u0c3f\u0c36"+
56268 		"\u0001\u0000\u0000\u0000\u0c3f\u0c37\u0001\u0000\u0000\u0000\u0c3f\u0c38"+
56269 		"\u0001\u0000\u0000\u0000\u0c3f\u0c39\u0001\u0000\u0000\u0000\u0c3f\u0c3a"+
56270 		"\u0001\u0000\u0000\u0000\u0c3f\u0c3b\u0001\u0000\u0000\u0000\u0c3f\u0c3c"+
56271 		"\u0001\u0000\u0000\u0000\u0c3f\u0c3d\u0001\u0000\u0000\u0000\u0c3f\u0c3e"+
56272 		"\u0001\u0000\u0000\u0000\u0c40\u01bf\u0001\u0000\u0000\u0000\u0c41\u0c42"+
56273 		"\u0005M\u0000\u0000\u0c42\u0c44\u0007-\u0000\u0000\u0c43\u0c41\u0001\u0000"+
56274 		"\u0000\u0000\u0c43\u0c44\u0001\u0000\u0000\u0000\u0c44\u0c45\u0001\u0000"+
56275 		"\u0000\u0000\u0c45\u0c48\u00059\u0000\u0000\u0c46\u0c49\u0003\u01c6\u00e3"+
56276 		"\u0000\u0c47\u0c49\u0003\u01cc\u00e6\u0000\u0c48\u0c46\u0001\u0000\u0000"+
56277 		"\u0000\u0c48\u0c47\u0001\u0000\u0000\u0000\u0c49\u01c1\u0001\u0000\u0000"+
56278 		"\u0000\u0c4a\u0c4b\u0003\u01c4\u00e2\u0000\u0c4b\u0c4e\u0003\u00acV\u0000"+
56279 		"\u0c4c\u0c4d\u0005\u010e\u0000\u0000\u0c4d\u0c4f\u0003Z-\u0000\u0c4e\u0c4c"+
56280 		"\u0001\u0000\u0000\u0000\u0c4e\u0c4f\u0001\u0000\u0000\u0000\u0c4f\u0c53"+
56281 		"\u0001\u0000\u0000\u0000\u0c50\u0c54\u0005l\u0000\u0000\u0c51\u0c52\u0005"+
56282 		"k\u0000\u0000\u0c52\u0c54\u0005l\u0000\u0000\u0c53\u0c50\u0001\u0000\u0000"+
56283 		"\u0000\u0c53\u0c51\u0001\u0000\u0000\u0000\u0c53\u0c54\u0001\u0000\u0000"+
56284 		"\u0000\u0c54\u0c56\u0001\u0000\u0000\u0000\u0c55\u0c57\u0005\u0140\u0000"+
56285 		"\u0000\u0c56\u0c55\u0001\u0000\u0000\u0000\u0c56\u0c57\u0001\u0000\u0000"+
56286 		"\u0000\u0c57\u01c3\u0001\u0000\u0000\u0000\u0c58\u0c59\u00053\u0000\u0000"+
56287 		"\u0c59\u0c5a\u0005<\u0000\u0000\u0c5a\u0c5b\u0003H$\u0000\u0c5b\u01c5"+
56288 		"\u0001\u0000\u0000\u0000\u0c5c\u0c61\u0003\u01c8\u00e4\u0000\u0c5d\u0c5e"+
56289 		"\u0005%\u0000\u0000\u0c5e\u0c60\u0003\u01c8\u00e4\u0000\u0c5f\u0c5d\u0001"+
56290 		"\u0000\u0000\u0000\u0c60\u0c63\u0001\u0000\u0000\u0000\u0c61\u0c5f\u0001"+
56291 		"\u0000\u0000\u0000\u0c61\u0c62\u0001\u0000\u0000\u0000\u0c62\u01c7\u0001"+
56292 		"\u0000\u0000\u0000\u0c63\u0c61\u0001\u0000\u0000\u0000\u0c64\u0c6b\u0003"+
56293 		"\u0154\u00aa\u0000\u0c65\u0c6b\u0003\u018a\u00c5\u0000\u0c66\u0c6b\u0003"+
56294 		"\u018c\u00c6\u0000\u0c67\u0c6b\u0003\u018e\u00c7\u0000\u0c68\u0c6b\u0003"+
56295 		"\u01f6\u00fb\u0000\u0c69\u0c6b\u0003\u01ca\u00e5\u0000\u0c6a\u0c64\u0001"+
56296 		"\u0000\u0000\u0000\u0c6a\u0c65\u0001\u0000\u0000\u0000\u0c6a\u0c66\u0001"+
56297 		"\u0000\u0000\u0000\u0c6a\u0c67\u0001\u0000\u0000\u0000\u0c6a\u0c68\u0001"+
56298 		"\u0000\u0000\u0000\u0c6a\u0c69\u0001\u0000\u0000\u0000\u0c6b\u01c9\u0001"+
56299 		"\u0000\u0000\u0000\u0c6c\u0c6d\u0005?\u0000\u0000\u0c6d\u0c6f\u0003X,"+
56300 		"\u0000\u0c6e\u0c6c\u0001\u0000\u0000\u0000\u0c6e\u0c6f\u0001\u0000\u0000"+
56301 		"\u0000\u0c6f\u0c70\u0001\u0000\u0000\u0000\u0c70\u0c71\u0005\u009a\u0000"+
56302 		"\u0000\u0c71\u0c72\u0003t:\u0000\u0c72\u0c73\u0005f\u0000\u0000\u0c73"+
56303 		"\u0c74\u0003H$\u0000\u0c74\u01cb\u0001\u0000\u0000\u0000\u0c75\u0c76\u0003"+
56304 		"\u01ce\u00e7\u0000\u0c76\u0c77\u0005%\u0000\u0000\u0c77\u0c78\u0003\u01a2"+
56305 		"\u00d1\u0000\u0c78\u0c7e\u0001\u0000\u0000\u0000\u0c79\u0c7a\u0003\u01a2"+
56306 		"\u00d1\u0000\u0c7a\u0c7b\u0005%\u0000\u0000\u0c7b\u0c7c\u0003\u01ce\u00e7"+
56307 		"\u0000\u0c7c\u0c7e\u0001\u0000\u0000\u0000\u0c7d\u0c75\u0001\u0000\u0000"+
56308 		"\u0000\u0c7d\u0c79\u0001\u0000\u0000\u0000\u0c7e\u01cd\u0001\u0000\u0000"+
56309 		"\u0000\u0c7f\u0c80\u0003\u01d0\u00e8\u0000\u0c80\u0c81\u0005\u009a\u0000"+
56310 		"\u0000\u0c81\u0c84\u0003t:\u0000\u0c82\u0c83\u0005M\u0000\u0000\u0c83"+
56311 		"\u0c85\u0005L\u0000\u0000\u0c84\u0c82\u0001\u0000\u0000\u0000\u0c84\u0c85"+
56312 		"\u0001\u0000\u0000\u0000\u0c85\u0c86\u0001\u0000\u0000\u0000\u0c86\u0c87"+
56313 		"\u0005%\u0000\u0000\u0c87\u0c88\u0003\u01d0\u00e8\u0000\u0c88\u01cf\u0001"+
56314 		"\u0000\u0000\u0000\u0c89\u0c8a\u0003H$\u0000\u0c8a\u0c8b\u0003\u00aeW"+
56315 		"\u0000\u0c8b\u0c8c\u0005\u00ff\u0000\u0000\u0c8c\u0c8d\u0005\u00fc\u0000"+
56316 		"\u0000\u0c8d\u0c8e\u0005`\u0000\u0000\u0c8e\u0c90\u0005\u00f8\u0000\u0000"+
56317 		"\u0c8f\u0c91\u0007$\u0000\u0000\u0c90\u0c8f\u0001\u0000\u0000\u0000\u0c90"+
56318 		"\u0c91\u0001\u0000\u0000\u0000\u0c91\u0c93\u0001\u0000\u0000\u0000\u0c92"+
56319 		"\u0c94\u0005\u00f3\u0000\u0000\u0c93\u0c92\u0001\u0000\u0000\u0000\u0c93"+
56320 		"\u0c94\u0001\u0000\u0000\u0000\u0c94\u0c97\u0001\u0000\u0000\u0000\u0c95"+
56321 		"\u0c96\u0005k\u0000\u0000\u0c96\u0c98\u0005l\u0000\u0000\u0c97\u0c95\u0001"+
56322 		"\u0000\u0000\u0000\u0c97\u0c98\u0001\u0000\u0000\u0000\u0c98\u0c9b\u0001"+
56323 		"\u0000\u0000\u0000\u0c99\u0c9a\u0005?\u0000\u0000\u0c9a\u0c9c\u0003\u00e4"+
56324 		"r\u0000\u0c9b\u0c99\u0001\u0000\u0000\u0000\u0c9b\u0c9c\u0001\u0000\u0000"+
56325 		"\u0000\u0c9c\u01d1\u0001\u0000\u0000\u0000\u0c9d\u0ca4\u00054\u0000\u0000"+
56326 		"\u0c9e\u0ca5\u0003\u01d4\u00ea\u0000\u0c9f\u0ca5\u0003\u01de\u00ef\u0000"+
56327 		"\u0ca0\u0ca5\u0003\u01e0\u00f0\u0000\u0ca1\u0ca2\u0005\u0134\u0000\u0000"+
56328 		"\u0ca2\u0ca3\u0005f\u0000\u0000\u0ca3\u0ca5\u0005\u01a1\u0000\u0000\u0ca4"+
56329 		"\u0c9e\u0001\u0000\u0000\u0000\u0ca4\u0c9f\u0001\u0000\u0000\u0000\u0ca4"+
56330 		"\u0ca0\u0001\u0000\u0000\u0000\u0ca4\u0ca1\u0001\u0000\u0000\u0000\u0ca5"+
56331 		"\u01d3\u0001\u0000\u0000\u0000\u0ca6\u0ca8\u0005?\u0000\u0000\u0ca7\u0ca6"+
56332 		"\u0001\u0000\u0000\u0000\u0ca7\u0ca8\u0001\u0000\u0000\u0000\u0ca8\u0caa"+
56333 		"\u0001\u0000\u0000\u0000\u0ca9\u0cab\u0003\u00f8|\u0000\u0caa\u0ca9\u0001"+
56334 		"\u0000\u0000\u0000\u0caa\u0cab\u0001\u0000\u0000\u0000\u0cab\u0cac\u0001"+
56335 		"\u0000\u0000\u0000\u0cac\u0cb1\u0003\u01d6\u00eb\u0000\u0cad\u0cae\u0005"+
56336 		"%\u0000\u0000\u0cae\u0cb0\u0003\u01d6\u00eb\u0000\u0caf\u0cad\u0001\u0000"+
56337 		"\u0000\u0000\u0cb0\u0cb3\u0001\u0000\u0000\u0000\u0cb1\u0caf\u0001\u0000"+
56338 		"\u0000\u0000\u0cb1\u0cb2\u0001\u0000\u0000\u0000\u0cb2\u01d5\u0001\u0000"+
56339 		"\u0000\u0000\u0cb3\u0cb1\u0001\u0000\u0000\u0000\u0cb4\u0cb6\u0003X,\u0000"+
56340 		"\u0cb5\u0cb7\u0003\u01d8\u00ec\u0000\u0cb6\u0cb5\u0001\u0000\u0000\u0000"+
56341 		"\u0cb6\u0cb7\u0001\u0000\u0000\u0000\u0cb7\u01d7\u0001\u0000\u0000\u0000"+
56342 		"\u0cb8\u0cb9\u0005M\u0000\u0000\u0cb9\u0cba\u0005\u001f\u0000\u0000\u0cba"+
56343 		"\u0cbf\u0003\u01da\u00ed\u0000\u0cbb\u0cbc\u0005%\u0000\u0000\u0cbc\u0cbe"+
56344 		"\u0003\u01da\u00ed\u0000\u0cbd\u0cbb\u0001\u0000\u0000\u0000\u0cbe\u0cc1"+
56345 		"\u0001\u0000\u0000\u0000\u0cbf\u0cbd\u0001\u0000\u0000\u0000\u0cbf\u0cc0"+
56346 		"\u0001\u0000\u0000\u0000\u0cc0\u0cc2\u0001\u0000\u0000\u0000\u0cc1\u0cbf"+
56347 		"\u0001\u0000\u0000\u0000\u0cc2\u0cc3\u0005 \u0000\u0000\u0cc3\u01d9\u0001"+
56348 		"\u0000\u0000\u0000\u0cc4\u0cc5\u0005\u012b\u0000\u0000\u0cc5\u0cc6\u0005"+
56349 		"\u0018\u0000\u0000\u0cc6\u0cd6\u0005\u02d4\u0000\u0000\u0cc7\u0cc8\u0005"+
56350 		"\u0130\u0000\u0000\u0cc8\u0cc9\u0005\u0018\u0000\u0000\u0cc9\u0cd6\u0003"+
56351 		"\u01dc\u00ee\u0000\u0cca\u0ccb\u0005\u012c\u0000\u0000\u0ccb\u0cd3\u0005"+
56352 		"g\u0000\u0000\u0ccc\u0ccd\u00034\u001a\u0000\u0ccd\u0cce\u0005\u001f\u0000"+
56353 		"\u0000\u0cce\u0ccf\u0003H$\u0000\u0ccf\u0cd0\u0005 \u0000\u0000\u0cd0"+
56354 		"\u0cd4\u0001\u0000\u0000\u0000\u0cd1\u0cd4\u0003\u00e4r\u0000\u0cd2\u0cd4"+
56355 		"\u0005\u02d3\u0000\u0000\u0cd3\u0ccc\u0001\u0000\u0000\u0000\u0cd3\u0cd1"+
56356 		"\u0001\u0000\u0000\u0000\u0cd3\u0cd2\u0001\u0000\u0000\u0000\u0cd4\u0cd6"+
56357 		"\u0001\u0000\u0000\u0000\u0cd5\u0cc4\u0001\u0000\u0000\u0000\u0cd5\u0cc7"+
56358 		"\u0001\u0000\u0000\u0000\u0cd5\u0cca\u0001\u0000\u0000\u0000\u0cd6\u01db"+
56359 		"\u0001\u0000\u0000\u0000\u0cd7\u0cd8\u0007\u0000\u0000\u0000\u0cd8\u01dd"+
56360 		"\u0001\u0000\u0000\u0000\u0cd9\u0cdb\u0005<\u0000\u0000\u0cda\u0cdc\u0003"+
56361 		"\u00f8|\u0000\u0cdb\u0cda\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0001\u0000"+
56362 		"\u0000\u0000\u0cdc\u0cdd\u0001\u0000\u0000\u0000\u0cdd\u0ce2\u0003H$\u0000"+
56363 		"\u0cde\u0cdf\u0005%\u0000\u0000\u0cdf\u0ce1\u0003H$\u0000\u0ce0\u0cde"+
56364 		"\u0001\u0000\u0000\u0000\u0ce1\u0ce4\u0001\u0000\u0000\u0000\u0ce2\u0ce0"+
56365 		"\u0001\u0000\u0000\u0000\u0ce2\u0ce3\u0001\u0000\u0000\u0000\u0ce3\u01df"+
56366 		"\u0001\u0000\u0000\u0000\u0ce4\u0ce2\u0001\u0000\u0000\u0000\u0ce5\u0ce7"+
56367 		"\u0005>\u0000\u0000\u0ce6\u0ce8\u0003\u00f8|\u0000\u0ce7\u0ce6\u0001\u0000"+
56368 		"\u0000\u0000\u0ce7\u0ce8\u0001\u0000\u0000\u0000\u0ce8\u0ce9\u0001\u0000"+
56369 		"\u0000\u0000\u0ce9\u0cee\u0003V+\u0000\u0cea\u0ceb\u0005%\u0000\u0000"+
56370 		"\u0ceb\u0ced\u0003V+\u0000\u0cec\u0cea\u0001\u0000\u0000\u0000\u0ced\u0cf0"+
56371 		"\u0001\u0000\u0000\u0000\u0cee\u0cec\u0001\u0000\u0000\u0000\u0cee\u0cef"+
56372 		"\u0001\u0000\u0000\u0000\u0cef\u01e1\u0001\u0000\u0000\u0000\u0cf0\u0cee"+
56373 		"\u0001\u0000\u0000\u0000\u0cf1\u0cf3\u0005M\u0000\u0000\u0cf2\u0cf1\u0001"+
56374 		"\u0000\u0000\u0000\u0cf2\u0cf3\u0001\u0000\u0000\u0000\u0cf3\u0cf4\u0001"+
56375 		"\u0000\u0000\u0000\u0cf4\u0cf5\u0007-\u0000\u0000\u0cf5\u0cf8\u0005?\u0000"+
56376 		"\u0000\u0cf6\u0cf9\u0005r\u0000\u0000\u0cf7\u0cf9\u0003X,\u0000\u0cf8"+
56377 		"\u0cf6\u0001\u0000\u0000\u0000\u0cf8\u0cf7\u0001\u0000\u0000\u0000\u0cf9"+
56378 		"\u01e3\u0001\u0000\u0000\u0000\u0cfa\u0cfb\u0007.\u0000\u0000\u0cfb\u0cfe"+
56379 		"\u0005G\u0000\u0000\u0cfc\u0cff\u0005r\u0000\u0000\u0cfd\u0cff\u0003\u00e6"+
56380 		"s\u0000\u0cfe\u0cfc\u0001\u0000\u0000\u0000\u0cfe\u0cfd\u0001\u0000\u0000"+
56381 		"\u0000\u0cff\u01e5\u0001\u0000\u0000\u0000\u0d00\u0d03\u0005\u0141\u0000"+
56382 		"\u0000\u0d01\u0d02\u0005\u00f5\u0000\u0000\u0d02\u0d04\u0003b1\u0000\u0d03"+
56383 		"\u0d01\u0001\u0000\u0000\u0000\u0d03\u0d04\u0001\u0000\u0000\u0000\u0d04"+
56384 		"\u0d05\u0001\u0000\u0000\u0000\u0d05\u0d06\u0005g\u0000\u0000\u0d06\u0d09"+
56385 		"\u0003@ \u0000\u0d07\u0d08\u0005\u00f5\u0000\u0000\u0d08\u0d0a\u0003b"+
56386 		"1\u0000\u0d09\u0d07\u0001\u0000\u0000\u0000\u0d09\u0d0a\u0001\u0000\u0000"+
56387 		"\u0000\u0d0a\u0d10\u0001\u0000\u0000\u0000\u0d0b\u0d0c\u0005M\u0000\u0000"+
56388 		"\u0d0c\u0d0d\u0005\u001f\u0000\u0000\u0d0d\u0d0e\u0003\u00e0p\u0000\u0d0e"+
56389 		"\u0d0f\u0005 \u0000\u0000\u0d0f\u0d11\u0001\u0000\u0000\u0000\u0d10\u0d0b"+
56390 		"\u0001\u0000\u0000\u0000\u0d10\u0d11\u0001\u0000\u0000\u0000\u0d11\u01e7"+
56391 		"\u0001\u0000\u0000\u0000\u0d12\u0d13\u0005:\u0000\u0000\u0d13\u0d16\u0005"+
56392 		"\u001f\u0000\u0000\u0d14\u0d17\u0003\u01ea\u00f5\u0000\u0d15\u0d17\u0003"+
56393 		"\u01ec\u00f6\u0000\u0d16\u0d14\u0001\u0000\u0000\u0000\u0d16\u0d15\u0001"+
56394 		"\u0000\u0000\u0000\u0d17\u0d18\u0001\u0000\u0000\u0000\u0d18\u0d19\u0005"+
56395 		" \u0000\u0000\u0d19\u01e9\u0001\u0000\u0000\u0000\u0d1a\u0d1b\u0005\u01b2"+
56396 		"\u0000\u0000\u0d1b\u0d1f\u0005\u0018\u0000\u0000\u0d1c\u0d20\u00034\u001a"+
56397 		"\u0000\u0d1d\u0d20\u0003\u00e4r\u0000\u0d1e\u0d20\u0005\u02d3\u0000\u0000"+
56398 		"\u0d1f\u0d1c\u0001\u0000\u0000\u0000\u0d1f\u0d1d\u0001\u0000\u0000\u0000"+
56399 		"\u0d1f\u0d1e\u0001\u0000\u0000\u0000\u0d20\u01eb\u0001\u0000\u0000\u0000"+
56400 		"\u0d21\u0d22\u0005\u01a2\u0000\u0000\u0d22\u0d28\u0005\u0018\u0000\u0000"+
56401 		"\u0d23\u0d29\u0005b\u0000\u0000\u0d24\u0d26\u0005a\u0000\u0000\u0d25\u0d27"+
56402 		"\u0003\u01ee\u00f7\u0000\u0d26\u0d25\u0001\u0000\u0000\u0000\u0d26\u0d27"+
56403 		"\u0001\u0000\u0000\u0000\u0d27\u0d29\u0001\u0000\u0000\u0000\u0d28\u0d23"+
56404 		"\u0001\u0000\u0000\u0000\u0d28\u0d24\u0001\u0000\u0000\u0000\u0d29\u01ed"+
56405 		"\u0001\u0000\u0000\u0000\u0d2a\u0d2e\u0005\u001f\u0000\u0000\u0d2b\u0d2c"+
56406 		"\u0005\u01ba\u0000\u0000\u0d2c\u0d2d\u0005\u0018\u0000\u0000\u0d2d\u0d2f"+
56407 		"\u0003@ \u0000\u0d2e\u0d2b\u0001\u0000\u0000\u0000\u0d2e\u0d2f\u0001\u0000"+
56408 		"\u0000\u0000\u0d2f\u0d31\u0001\u0000\u0000\u0000\u0d30\u0d32\u0003\u01f0"+
56409 		"\u00f8\u0000\u0d31\u0d30\u0001\u0000\u0000\u0000\u0d31\u0d32\u0001\u0000"+
56410 		"\u0000\u0000\u0d32\u0d34\u0001\u0000\u0000\u0000\u0d33\u0d35\u0003\u01f2"+
56411 		"\u00f9\u0000\u0d34\u0d33\u0001\u0000\u0000\u0000\u0d34\u0d35\u0001\u0000"+
56412 		"\u0000\u0000\u0d35\u0d36\u0001\u0000\u0000\u0000\u0d36\u0d37\u0005 \u0000"+
56413 		"\u0000\u0d37\u01ef\u0001\u0000\u0000\u0000\u0d38\u0d3a\u0005%\u0000\u0000"+
56414 		"\u0d39\u0d38\u0001\u0000\u0000\u0000\u0d39\u0d3a\u0001\u0000\u0000\u0000"+
56415 		"\u0d3a\u0d3b\u0001\u0000\u0000\u0000\u0d3b\u0d3c\u0005\u019f\u0000\u0000"+
56416 		"\u0d3c\u0d3d\u0005\u0018\u0000\u0000\u0d3d\u0d3e\u0003\u01dc\u00ee\u0000"+
56417 		"\u0d3e\u01f1\u0001\u0000\u0000\u0000\u0d3f\u0d41\u0005%\u0000\u0000\u0d40"+
56418 		"\u0d3f\u0001\u0000\u0000\u0000\u0d40\u0d41\u0001\u0000\u0000\u0000\u0d41"+
56419 		"\u0d42\u0001\u0000\u0000\u0000\u0d42\u0d43\u0005\u01b9\u0000\u0000\u0d43"+
56420 		"\u0d44\u0005\u0018\u0000\u0000\u0d44\u0d45\u0003\u01f4\u00fa\u0000\u0d45"+
56421 		"\u01f3\u0001\u0000\u0000\u0000\u0d46\u0d4a\u0005\u0128\u0000\u0000\u0d47"+
56422 		"\u0d48\u0005\u02d4\u0000\u0000\u0d48\u0d4a\u0007/\u0000\u0000\u0d49\u0d46"+
56423 		"\u0001\u0000\u0000\u0000\u0d49\u0d47\u0001\u0000\u0000\u0000\u0d4a\u01f5"+
56424 		"\u0001\u0000\u0000\u0000\u0d4b\u0d4e\u0003\u01f8\u00fc\u0000\u0d4c\u0d4f"+
56425 		"\u0003\u01fa\u00fd\u0000\u0d4d\u0d4f\u0003\u01fe\u00ff\u0000\u0d4e\u0d4c"+
56426 		"\u0001\u0000\u0000\u0000\u0d4e\u0d4d\u0001\u0000\u0000\u0000\u0d4f\u01f7"+
56427 		"\u0001\u0000\u0000\u0000\u0d50\u0d51\u0005>\u0000\u0000\u0d51\u0d52\u0003"+
56428 		"V+\u0000\u0d52\u01f9\u0001\u0000\u0000\u0000\u0d53\u0d59\u0005\u010d\u0000"+
56429 		"\u0000\u0d54\u0d5a\u0003\u0198\u00cc\u0000\u0d55\u0d57\u0003R)\u0000\u0d56"+
56430 		"\u0d58\u0003\u01fc\u00fe\u0000\u0d57\u0d56\u0001\u0000\u0000\u0000\u0d57"+
56431 		"\u0d58\u0001\u0000\u0000\u0000\u0d58\u0d5a\u0001\u0000\u0000\u0000\u0d59"+
56432 		"\u0d54\u0001\u0000\u0000\u0000\u0d59\u0d55\u0001\u0000\u0000\u0000\u0d5a"+
56433 		"\u01fb\u0001\u0000\u0000\u0000\u0d5b\u0d5c\u0005a\u0000\u0000\u0d5c\u0d5f"+
56434 		"\u0003\u00e4r\u0000\u0d5d\u0d5f\u0005\u009a\u0000\u0000\u0d5e\u0d5b\u0001"+
56435 		"\u0000\u0000\u0000\u0d5e\u0d5d\u0001\u0000\u0000\u0000\u0d5f\u01fd\u0001"+
56436 		"\u0000\u0000\u0000\u0d60\u0d61\u0005\u010c\u0000\u0000\u0d61\u0d69\u0005"+
56437 		"\u010f\u0000\u0000\u0d62\u0d63\u0005M\u0000\u0000\u0d63\u0d64\u0005\u019c"+
56438 		"\u0000\u0000\u0d64\u0d65\u0005\u0018\u0000\u0000\u0d65\u0d67\u0005\u02d4"+
56439 		"\u0000\u0000\u0d66\u0d68\u0005\u0116\u0000\u0000\u0d67\u0d66\u0001\u0000"+
56440 		"\u0000\u0000\u0d67\u0d68\u0001\u0000\u0000\u0000\u0d68\u0d6a\u0001\u0000"+
56441 		"\u0000\u0000\u0d69\u0d62\u0001\u0000\u0000\u0000\u0d69\u0d6a\u0001\u0000"+
56442 		"\u0000\u0000\u0d6a\u0d6c\u0001\u0000\u0000\u0000\u0d6b\u0d6d\u0003\u0182"+
56443 		"\u00c1\u0000\u0d6c\u0d6b\u0001\u0000\u0000\u0000\u0d6c\u0d6d\u0001\u0000"+
56444 		"\u0000\u0000\u0d6d\u01ff\u0001\u0000\u0000\u0000\u0d6e\u0d6f\u0005:\u0000"+
56445 		"\u0000\u0d6f\u0d70\u0005\u001f\u0000\u0000\u0d70\u0d71\u0005\u01bb\u0000"+
56446 		"\u0000\u0d71\u0d72\u0005\u0018\u0000\u0000\u0d72\u0d73\u00070\u0000\u0000"+
56447 		"\u0d73\u0d81\u0005 \u0000\u0000\u0d74\u0d75\u0005\u01ae\u0000\u0000\u0d75"+
56448 		"\u0d76\u0005\u0018\u0000\u0000\u0d76\u0d81\u0005a\u0000\u0000\u0d77\u0d78"+
56449 		"\u0005\u011b\u0000\u0000\u0d78\u0d79\u0005\u0018\u0000\u0000\u0d79\u0d81"+
56450 		"\u0007+\u0000\u0000\u0d7a\u0d7b\u0005\u01a2\u0000\u0000\u0d7b\u0d7c\u0005"+
56451 		"\u0018\u0000\u0000\u0d7c\u0d7e\u0005a\u0000\u0000\u0d7d\u0d7f\u0003\u0202"+
56452 		"\u0101\u0000\u0d7e\u0d7d\u0001\u0000\u0000\u0000\u0d7e\u0d7f\u0001\u0000"+
56453 		"\u0000\u0000\u0d7f\u0d81\u0001\u0000\u0000\u0000\u0d80\u0d6e\u0001\u0000"+
56454 		"\u0000\u0000\u0d80\u0d74\u0001\u0000\u0000\u0000\u0d80\u0d77\u0001\u0000"+
56455 		"\u0000\u0000\u0d80\u0d7a\u0001\u0000\u0000\u0000\u0d81\u0201\u0001\u0000"+
56456 		"\u0000\u0000\u0d82\u0d83\u0005\u001f\u0000\u0000\u0d83\u0d84\u0005\u01ba"+
56457 		"\u0000\u0000\u0d84\u0d85\u0005\u0018\u0000\u0000\u0d85\u0d8a\u0003@ \u0000"+
56458 		"\u0d86\u0d87\u0005%\u0000\u0000\u0d87\u0d88\u0005\u019f\u0000\u0000\u0d88"+
56459 		"\u0d89\u0005\u0018\u0000\u0000\u0d89\u0d8b\u0003\u01dc\u00ee\u0000\u0d8a"+
56460 		"\u0d86\u0001\u0000\u0000\u0000\u0d8a\u0d8b\u0001\u0000\u0000\u0000\u0d8b"+
56461 		"\u0d8c\u0001\u0000\u0000\u0000\u0d8c\u0d8d\u0005 \u0000\u0000\u0d8d\u0203"+
56462 		"\u0001\u0000\u0000\u0000\u0d8e\u0d8f\u0005\u01f6\u0000\u0000\u0d8f\u0d90"+
56463 		"\u0005\u0018\u0000\u0000\u0d90\u0d92\u00071\u0000\u0000\u0d91\u0d8e\u0001"+
56464 		"\u0000\u0000\u0000\u0d91\u0d92\u0001\u0000\u0000\u0000\u0d92\u0d94\u0001"+
56465 		"\u0000\u0000\u0000\u0d93\u0d95\u0003\u0206\u0103\u0000\u0d94\u0d93\u0001"+
56466 		"\u0000\u0000\u0000\u0d94\u0d95\u0001\u0000\u0000\u0000\u0d95\u0d98\u0001"+
56467 		"\u0000\u0000\u0000\u0d96\u0d97\u0005\u010e\u0000\u0000\u0d97\u0d99\u0003"+
56468 		"\u00e4r\u0000\u0d98\u0d96\u0001\u0000\u0000\u0000\u0d98\u0d99\u0001\u0000"+
56469 		"\u0000\u0000\u0d99\u0da3\u0001\u0000\u0000\u0000\u0d9a\u0d9b\u0005M\u0000"+
56470 		"\u0000\u0d9b\u0da0\u0003\u0208\u0104\u0000\u0d9c\u0d9d\u0005%\u0000\u0000"+
56471 		"\u0d9d\u0d9f\u0003\u0208\u0104\u0000\u0d9e\u0d9c\u0001\u0000\u0000\u0000"+
56472 		"\u0d9f\u0da2\u0001\u0000\u0000\u0000\u0da0\u0d9e\u0001\u0000\u0000\u0000"+
56473 		"\u0da0\u0da1\u0001\u0000\u0000\u0000\u0da1\u0da4\u0001\u0000\u0000\u0000"+
56474 		"\u0da2\u0da0\u0001\u0000\u0000\u0000\u0da3\u0d9a\u0001\u0000\u0000\u0000"+
56475 		"\u0da3\u0da4\u0001\u0000\u0000\u0000\u0da4\u0205\u0001\u0000\u0000\u0000"+
56476 		"\u0da5\u0da7\u0005a\u0000\u0000\u0da6\u0da8\u0005@\u0000\u0000\u0da7\u0da6"+
56477 		"\u0001\u0000\u0000\u0000\u0da7\u0da8\u0001\u0000\u0000\u0000\u0da8\u0da9"+
56478 		"\u0001\u0000\u0000\u0000\u0da9\u0dae\u0003\u020c\u0106\u0000\u0daa\u0dab"+
56479 		"\u0005%\u0000\u0000\u0dab\u0dad\u0003\u020c\u0106\u0000\u0dac\u0daa\u0001"+
56480 		"\u0000\u0000\u0000\u0dad\u0db0\u0001\u0000\u0000\u0000\u0dae\u0dac\u0001"+
56481 		"\u0000\u0000\u0000\u0dae\u0daf\u0001\u0000\u0000\u0000\u0daf\u0db5\u0001"+
56482 		"\u0000\u0000\u0000\u0db0\u0dae\u0001\u0000\u0000\u0000\u0db1\u0db2\u0005"+
56483 		"%\u0000\u0000\u0db2\u0db4\u0003\u0210\u0108\u0000\u0db3\u0db1\u0001\u0000"+
56484 		"\u0000\u0000\u0db4\u0db7\u0001\u0000\u0000\u0000\u0db5\u0db3\u0001\u0000"+
56485 		"\u0000\u0000\u0db5\u0db6\u0001\u0000\u0000\u0000\u0db6\u0db8\u0001\u0000"+
56486 		"\u0000\u0000\u0db7\u0db5\u0001\u0000\u0000\u0000\u0db8\u0db9\u0003\u0214"+
56487 		"\u010a\u0000\u0db9\u0207\u0001\u0000\u0000\u0000\u0dba\u0dbb\u0005\u011e"+
56488 		"\u0000\u0000\u0dbb\u0dc0\u0003\u020a\u0105\u0000\u0dbc\u0dbd\u0005%\u0000"+
56489 		"\u0000\u0dbd\u0dbf\u0003\u020a\u0105\u0000\u0dbe\u0dbc\u0001\u0000\u0000"+
56490 		"\u0000\u0dbf\u0dc2\u0001\u0000\u0000\u0000\u0dc0\u0dbe\u0001\u0000\u0000"+
56491 		"\u0000\u0dc0\u0dc1\u0001\u0000\u0000\u0000\u0dc1\u0ddd\u0001\u0000\u0000"+
56492 		"\u0000\u0dc2\u0dc0\u0001\u0000\u0000\u0000\u0dc3\u0dc4\u0005\u0290\u0000"+
56493 		"\u0000\u0dc4\u0dc5\u0005\u0018\u0000\u0000\u0dc5\u0ddd\u0003\u00e4r\u0000"+
56494 		"\u0dc6\u0dc7\u0005\u0291\u0000\u0000\u0dc7\u0dc8\u0005\u0018\u0000\u0000"+
56495 		"\u0dc8\u0ddd\u0003\u00e4r\u0000\u0dc9\u0dca\u0005\u0293\u0000\u0000\u0dca"+
56496 		"\u0dcb\u0005\u0018\u0000\u0000\u0dcb\u0ddd\u0007\u0000\u0000\u0000\u0dcc"+
56497 		"\u0dcd\u0005\u0294\u0000\u0000\u0dcd\u0dce\u0005\u0018\u0000\u0000\u0dce"+
56498 		"\u0ddd\u0007\u0000\u0000\u0000\u0dcf\u0dd0\u0005\u0295\u0000\u0000\u0dd0"+
56499 		"\u0dd1\u0005\u0018\u0000\u0000\u0dd1\u0ddd\u0003\u00e4r\u0000\u0dd2\u0dd3"+
56500 		"\u0005\u0205\u0000\u0000\u0dd3\u0ddd\u0007\u0000\u0000\u0000\u0dd4\u0dd5"+
56501 		"\u0005\u0206\u0000\u0000\u0dd5\u0ddd\u0007\u0000\u0000\u0000\u0dd6\u0dd7"+
56502 		"\u0005\u0296\u0000\u0000\u0dd7\u0dd8\u0005\u0018\u0000\u0000\u0dd8\u0dd9"+
56503 		"\u0005a\u0000\u0000\u0dd9\u0dda\u0005\u0297\u0000\u0000\u0dda\u0ddb\u0005"+
56504 		"\u0018\u0000\u0000\u0ddb\u0ddd\u0003\u00e4r\u0000\u0ddc\u0dba\u0001\u0000"+
56505 		"\u0000\u0000\u0ddc\u0dc3\u0001\u0000\u0000\u0000\u0ddc\u0dc6\u0001\u0000"+
56506 		"\u0000\u0000\u0ddc\u0dc9\u0001\u0000\u0000\u0000\u0ddc\u0dcc\u0001\u0000"+
56507 		"\u0000\u0000\u0ddc\u0dcf\u0001\u0000\u0000\u0000\u0ddc\u0dd2\u0001\u0000"+
56508 		"\u0000\u0000\u0ddc\u0dd4\u0001\u0000\u0000\u0000\u0ddc\u0dd6\u0001\u0000"+
56509 		"\u0000\u0000\u0ddd\u0209\u0001\u0000\u0000\u0000\u0dde\u0ddf\u0005\u0204"+
56510 		"\u0000\u0000\u0ddf\u0de0\u0005\u0018\u0000\u0000\u0de0\u0de5\u00072\u0000"+
56511 		"\u0000\u0de1\u0de2\u0005\u0297\u0000\u0000\u0de2\u0de3\u0005\u0018\u0000"+
56512 		"\u0000\u0de3\u0de5\u0003\u00e4r\u0000\u0de4\u0dde\u0001\u0000\u0000\u0000"+
56513 		"\u0de4\u0de1\u0001\u0000\u0000\u0000\u0de5\u020b\u0001\u0000\u0000\u0000"+
56514 		"\u0de6\u0de7\u0005\u001f\u0000\u0000\u0de7\u0de8\u0005\u00aa\u0000\u0000"+
56515 		"\u0de8\u0de9\u0005\u0018\u0000\u0000\u0de9\u0dea\u0003\u00e4r\u0000\u0dea"+
56516 		"\u0deb\u0005%\u0000\u0000\u0deb\u0dec\u0005\u01f8\u0000\u0000\u0dec\u0ded"+
56517 		"\u0005\u0018\u0000\u0000\u0ded\u0dee\u0005\u02d3\u0000\u0000\u0dee\u0def"+
56518 		"\u0003\u020e\u0107\u0000\u0def\u0df0\u0005 \u0000\u0000\u0df0\u020d\u0001"+
56519 		"\u0000\u0000\u0000\u0df1\u0df2\u0005%\u0000\u0000\u0df2\u0df3\u0005\u01f9"+
56520 		"\u0000\u0000\u0df3\u0df4\u0005\u0018\u0000\u0000\u0df4\u0df6\u0003\u001e"+
56521 		"\u000f\u0000\u0df5\u0df7\u00073\u0000\u0000\u0df6\u0df5\u0001\u0000\u0000"+
56522 		"\u0000\u0df6\u0df7\u0001\u0000\u0000\u0000\u0df7\u0df9\u0001\u0000\u0000"+
56523 		"\u0000\u0df8\u0df1\u0001\u0000\u0000\u0000\u0df8\u0df9\u0001\u0000\u0000"+
56524 		"\u0000\u0df9\u0e04\u0001\u0000\u0000\u0000\u0dfa\u0dfb\u0005%\u0000\u0000"+
56525 		"\u0dfb\u0dfc\u0005\u01fa\u0000\u0000\u0dfc\u0e02\u0005\u0018\u0000\u0000"+
56526 		"\u0dfd\u0dff\u0003\u001e\u000f\u0000\u0dfe\u0e00\u00073\u0000\u0000\u0dff"+
56527 		"\u0dfe\u0001\u0000\u0000\u0000\u0dff\u0e00\u0001\u0000\u0000\u0000\u0e00"+
56528 		"\u0e03\u0001\u0000\u0000\u0000\u0e01\u0e03\u0005\u01fc\u0000\u0000\u0e02"+
56529 		"\u0dfd\u0001\u0000\u0000\u0000\u0e02\u0e01\u0001\u0000\u0000\u0000\u0e03"+
56530 		"\u0e05\u0001\u0000\u0000\u0000\u0e04\u0dfa\u0001\u0000\u0000\u0000\u0e04"+
56531 		"\u0e05\u0001\u0000\u0000\u0000\u0e05\u0e0d\u0001\u0000\u0000\u0000\u0e06"+
56532 		"\u0e07\u0005%\u0000\u0000\u0e07\u0e08\u0005\u01fb\u0000\u0000\u0e08\u0e09"+
56533 		"\u0005\u0018\u0000\u0000\u0e09\u0e0b\u0003\u001e\u000f\u0000\u0e0a\u0e0c"+
56534 		"\u00074\u0000\u0000\u0e0b\u0e0a\u0001\u0000\u0000\u0000\u0e0b\u0e0c\u0001"+
56535 		"\u0000\u0000\u0000\u0e0c\u0e0e\u0001\u0000\u0000\u0000\u0e0d\u0e06\u0001"+
56536 		"\u0000\u0000\u0000\u0e0d\u0e0e\u0001\u0000\u0000\u0000\u0e0e\u020f\u0001"+
56537 		"\u0000\u0000\u0000\u0e0f\u0e10\u0005\u0203\u0000\u0000\u0e10\u0e12\u0003"+
56538 		"\u00e4r\u0000\u0e11\u0e13\u0003\u0212\u0109\u0000\u0e12\u0e11\u0001\u0000"+
56539 		"\u0000\u0000\u0e12\u0e13\u0001\u0000\u0000\u0000\u0e13\u0e14\u0001\u0000"+
56540 		"\u0000\u0000\u0e14\u0e19\u0003\u020c\u0106\u0000\u0e15\u0e16\u0005%\u0000"+
56541 		"\u0000\u0e16\u0e18\u0003\u020c\u0106\u0000\u0e17\u0e15\u0001\u0000\u0000"+
56542 		"\u0000\u0e18\u0e1b\u0001\u0000\u0000\u0000\u0e19\u0e17\u0001\u0000\u0000"+
56543 		"\u0000\u0e19\u0e1a\u0001\u0000\u0000\u0000\u0e1a\u0211\u0001\u0000\u0000"+
56544 		"\u0000\u0e1b\u0e19\u0001\u0000\u0000\u0000\u0e1c\u0e1d\u0005\u0201\u0000"+
56545 		"\u0000\u0e1d\u0e1f\u0005\u011e\u0000\u0000\u0e1e\u0e1c\u0001\u0000\u0000"+
56546 		"\u0000\u0e1e\u0e1f\u0001\u0000\u0000\u0000\u0e1f\u0e21\u0001\u0000\u0000"+
56547 		"\u0000\u0e20\u0e22\u0005\u009a\u0000\u0000\u0e21\u0e20\u0001\u0000\u0000"+
56548 		"\u0000\u0e21\u0e22\u0001\u0000\u0000\u0000\u0e22\u0e26\u0001\u0000\u0000"+
56549 		"\u0000\u0e23\u0e24\u0005\u0201\u0000\u0000\u0e24\u0e26\u0005\u0202\u0000"+
56550 		"\u0000\u0e25\u0e1e\u0001\u0000\u0000\u0000\u0e25\u0e23\u0001\u0000\u0000"+
56551 		"\u0000\u0e26\u0213\u0001\u0000\u0000\u0000\u0e27\u0e28\u0005\u018d\u0000"+
56552 		"\u0000\u0e28\u0e29\u0005a\u0000\u0000\u0e29\u0e2e\u0003\u020c\u0106\u0000"+
56553 		"\u0e2a\u0e2b\u0005%\u0000\u0000\u0e2b\u0e2d\u0003\u020c\u0106\u0000\u0e2c"+
56554 		"\u0e2a\u0001\u0000\u0000\u0000\u0e2d\u0e30\u0001\u0000\u0000\u0000\u0e2e"+
56555 		"\u0e2c\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0001\u0000\u0000\u0000\u0e2f"+
56556 		"\u0e32\u0001\u0000\u0000\u0000\u0e30\u0e2e\u0001\u0000\u0000\u0000\u0e31"+
56557 		"\u0e27\u0001\u0000\u0000\u0000\u0e31\u0e32\u0001\u0000\u0000\u0000\u0e32"+
56558 		"\u0215\u0001\u0000\u0000\u0000\u0e33\u0e3d\u0005\u00cd\u0000\u0000\u0e34"+
56559 		"\u0e39\u0003\u0218\u010c\u0000\u0e35\u0e36\u0005%\u0000\u0000\u0e36\u0e38"+
56560 		"\u0003\u0218\u010c\u0000\u0e37\u0e35\u0001\u0000\u0000\u0000\u0e38\u0e3b"+
56561 		"\u0001\u0000\u0000\u0000\u0e39\u0e37\u0001\u0000\u0000\u0000\u0e39\u0e3a"+
56562 		"\u0001\u0000\u0000\u0000\u0e3a\u0e3e\u0001\u0000\u0000\u0000\u0e3b\u0e39"+
56563 		"\u0001\u0000\u0000\u0000\u0e3c\u0e3e\u0003\u021a\u010d\u0000\u0e3d\u0e34"+
56564 		"\u0001\u0000\u0000\u0000\u0e3d\u0e3c\u0001\u0000\u0000\u0000\u0e3e\u0217"+
56565 		"\u0001\u0000\u0000\u0000\u0e3f\u0e41\u0003\u00eau\u0000\u0e40\u0e42\u0005"+
56566 		"`\u0000\u0000\u0e41\u0e40\u0001\u0000\u0000\u0000\u0e41\u0e42\u0001\u0000"+
56567 		"\u0000\u0000\u0e42\u0e43\u0001\u0000\u0000\u0000\u0e43\u0e46\u0003\u00ac"+
56568 		"V\u0000\u0e44\u0e45\u0005\u0018\u0000\u0000\u0e45\u0e47\u0003t:\u0000"+
56569 		"\u0e46\u0e44\u0001\u0000\u0000\u0000\u0e46\u0e47\u0001\u0000\u0000\u0000"+
56570 		"\u0e47\u0e4c\u0001\u0000\u0000\u0000\u0e48\u0e49\u0003\u00eau\u0000\u0e49"+
56571 		"\u0e4a\u0005\u00ce\u0000\u0000\u0e4a\u0e4c\u0001\u0000\u0000\u0000\u0e4b"+
56572 		"\u0e3f\u0001\u0000\u0000\u0000\u0e4b\u0e48\u0001\u0000\u0000\u0000\u0e4c"+
56573 		"\u0219\u0001\u0000\u0000\u0000\u0e4d\u0e4f\u0003\u00eau\u0000\u0e4e\u0e50"+
56574 		"\u0005`\u0000\u0000\u0e4f\u0e4e\u0001\u0000\u0000\u0000\u0e4f\u0e50\u0001"+
56575 		"\u0000\u0000\u0000\u0e50\u0e51\u0001\u0000\u0000\u0000\u0e51\u0e52\u0003"+
56576 		"\u021c\u010e\u0000\u0e52\u021b\u0001\u0000\u0000\u0000\u0e53\u0e54\u0005"+
56577 		";\u0000\u0000\u0e54\u0e55\u0005\u001f\u0000\u0000\u0e55\u0e5a\u0003\u021e"+
56578 		"\u010f\u0000\u0e56\u0e57\u0005%\u0000\u0000\u0e57\u0e59\u0003\u021e\u010f"+
56579 		"\u0000\u0e58\u0e56\u0001\u0000\u0000\u0000\u0e59\u0e5c\u0001\u0000\u0000"+
56580 		"\u0000\u0e5a\u0e58\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0001\u0000\u0000"+
56581 		"\u0000\u0e5b\u0e5d\u0001\u0000\u0000\u0000\u0e5c\u0e5a\u0001\u0000\u0000"+
56582 		"\u0000\u0e5d\u0e5e\u0005 \u0000\u0000\u0e5e\u021d\u0001\u0000\u0000\u0000"+
56583 		"\u0e5f\u0e62\u0003\u0220\u0110\u0000\u0e60\u0e62\u0003\u0224\u0112\u0000"+
56584 		"\u0e61\u0e5f\u0001\u0000\u0000\u0000\u0e61\u0e60\u0001\u0000\u0000\u0000"+
56585 		"\u0e62\u021f\u0001\u0000\u0000\u0000\u0e63\u0e67\u0003H$\u0000\u0e64\u0e68"+
56586 		"\u0003\u00aeW\u0000\u0e65\u0e66\u0005`\u0000\u0000\u0e66\u0e68\u0003b"+
56587 		"1\u0000\u0e67\u0e64\u0001\u0000\u0000\u0000\u0e67\u0e65\u0001\u0000\u0000"+
56588 		"\u0000\u0e68\u0e6b\u0001\u0000\u0000\u0000\u0e69\u0e6a\u0005\u010e\u0000"+
56589 		"\u0000\u0e6a\u0e6c\u0003Z-\u0000\u0e6b\u0e69\u0001\u0000\u0000\u0000\u0e6b"+
56590 		"\u0e6c\u0001\u0000\u0000\u0000\u0e6c\u0e79\u0001\u0000\u0000\u0000\u0e6d"+
56591 		"\u0e6e\u0005\u009a\u0000\u0000\u0e6e\u0e70\u0003b1\u0000\u0e6f\u0e6d\u0001"+
56592 		"\u0000\u0000\u0000\u0e6f\u0e70\u0001\u0000\u0000\u0000\u0e70\u0e7a\u0001"+
56593 		"\u0000\u0000\u0000\u0e71\u0e77\u0005\u0124\u0000\u0000\u0e72\u0e73\u0005"+
56594 		"\u001f\u0000\u0000\u0e73\u0e74\u0005\u02d4\u0000\u0000\u0e74\u0e75\u0005"+
56595 		"%\u0000\u0000\u0e75\u0e76\u0005\u02d4\u0000\u0000\u0e76\u0e78\u0005 \u0000"+
56596 		"\u0000\u0e77\u0e72\u0001\u0000\u0000\u0000\u0e77\u0e78\u0001\u0000\u0000"+
56597 		"\u0000\u0e78\u0e7a\u0001\u0000\u0000\u0000\u0e79\u0e6f\u0001\u0000\u0000"+
56598 		"\u0000\u0e79\u0e71\u0001\u0000\u0000\u0000\u0e7a\u0e7c\u0001\u0000\u0000"+
56599 		"\u0000\u0e7b\u0e7d\u0005\u013d\u0000\u0000\u0e7c\u0e7b\u0001\u0000\u0000"+
56600 		"\u0000\u0e7c\u0e7d\u0001\u0000\u0000\u0000\u0e7d\u0e7e\u0001\u0000\u0000"+
56601 		"\u0000\u0e7e\u0e7f\u0003\u0222\u0111\u0000\u0e7f\u0221\u0001\u0000\u0000"+
56602 		"\u0000\u0e80\u0e84\u0005l\u0000\u0000\u0e81\u0e82\u0005k\u0000\u0000\u0e82"+
56603 		"\u0e84\u0005l\u0000\u0000\u0e83\u0e80\u0001\u0000\u0000\u0000\u0e83\u0e81"+
56604 		"\u0001\u0000\u0000\u0000\u0e83\u0e84\u0001\u0000\u0000\u0000\u0e84\u0e92"+
56605 		"\u0001\u0000\u0000\u0000\u0e85\u0e86\u0005@\u0000\u0000\u0e86\u0e89\u0005"+
56606 		"C\u0000\u0000\u0e87\u0e89\u0005A\u0000\u0000\u0e88\u0e85\u0001\u0000\u0000"+
56607 		"\u0000\u0e88\u0e87\u0001\u0000\u0000\u0000\u0e88\u0e89\u0001\u0000\u0000"+
56608 		"\u0000\u0e89\u0e92\u0001\u0000\u0000\u0000\u0e8a\u0e8b\u0005\u00fe\u0000"+
56609 		"\u0000\u0e8b\u0e8c\u0005\u001f\u0000\u0000\u0e8c\u0e8d\u0003b1\u0000\u0e8d"+
56610 		"\u0e8e\u0005 \u0000\u0000\u0e8e\u0e92\u0001\u0000\u0000\u0000\u0e8f\u0e90"+
56611 		"\u0005M\u0000\u0000\u0e90\u0e92\u0003\u00ccf\u0000\u0e91\u0e83\u0001\u0000"+
56612 		"\u0000\u0000\u0e91\u0e88\u0001\u0000\u0000\u0000\u0e91\u0e8a\u0001\u0000"+
56613 		"\u0000\u0000\u0e91\u0e8f\u0001\u0000\u0000\u0000\u0e92\u0223\u0001\u0000"+
56614 		"\u0000\u0000\u0e93\u0e94\u0005@\u0000\u0000\u0e94\u0e97\u0005C\u0000\u0000"+
56615 		"\u0e95\u0e97\u0005A\u0000\u0000\u0e96\u0e93\u0001\u0000\u0000\u0000\u0e96"+
56616 		"\u0e95\u0001\u0000\u0000\u0000\u0e97\u0e98\u0001\u0000\u0000\u0000\u0e98"+
56617 		"\u0e99\u0005\u001f\u0000\u0000\u0e99\u0e9e\u0003H$\u0000\u0e9a\u0e9b\u0005"+
56618 		"%\u0000\u0000\u0e9b\u0e9d\u0003H$\u0000\u0e9c\u0e9a\u0001\u0000\u0000"+
56619 		"\u0000\u0e9d\u0ea0\u0001\u0000\u0000\u0000\u0e9e\u0e9c\u0001\u0000\u0000"+
56620 		"\u0000\u0e9e\u0e9f\u0001\u0000\u0000\u0000\u0e9f\u0ea1\u0001\u0000\u0000"+
56621 		"\u0000\u0ea0\u0e9e\u0001\u0000\u0000\u0000\u0ea1\u0ea2\u0005 \u0000\u0000"+
56622 		"\u0ea2\u0ea6\u0001\u0000\u0000\u0000\u0ea3\u0ea4\u0005\u00fe\u0000\u0000"+
56623 		"\u0ea4\u0ea6\u0003b1\u0000\u0ea5\u0e96\u0001\u0000\u0000\u0000\u0ea5\u0ea3"+
56624 		"\u0001\u0000\u0000\u0000\u0ea6\u0225\u0001\u0000\u0000\u0000\u0ea7\u0ea8"+
56625 		"\u0005:\u0000\u0000\u0ea8\u0ea9\u0003\u00eau\u0000\u0ea9\u0eaa\u0003\u0228"+
56626 		"\u0114\u0000\u0eaa\u0227\u0001\u0000\u0000\u0000\u0eab\u0eac\u0005\u0014"+
56627 		"\u0000\u0000\u0eac\u0eae\u0003*\u0015\u0000\u0ead\u0eab\u0001\u0000\u0000"+
56628 		"\u0000\u0ead\u0eae\u0001\u0000\u0000\u0000\u0eae\u0eaf\u0001\u0000\u0000"+
56629 		"\u0000\u0eaf\u0eb6\u0005\u0018\u0000\u0000\u0eb0\u0eb7\u0003b1\u0000\u0eb1"+
56630 		"\u0eb2\u0003*\u0015\u0000\u0eb2\u0eb3\u0005\u0014\u0000\u0000\u0eb3\u0eb4"+
56631 		"\u0003*\u0015\u0000\u0eb4\u0eb7\u0001\u0000\u0000\u0000\u0eb5\u0eb7\u0005"+
56632 		"\u02da\u0000\u0000\u0eb6\u0eb0\u0001\u0000\u0000\u0000\u0eb6\u0eb1\u0001"+
56633 		"\u0000\u0000\u0000\u0eb6\u0eb5\u0001\u0000\u0000\u0000\u0eb7\u0ec3\u0001"+
56634 		"\u0000\u0000\u0000\u0eb8\u0eb9\u0003\u022e\u0117\u0000\u0eb9\u0eba\u0003"+
56635 		"b1\u0000\u0eba\u0ec3\u0001\u0000\u0000\u0000\u0ebb\u0ebc\u0005\u0018\u0000"+
56636 		"\u0000\u0ebc\u0ec3\u0003\u022a\u0115\u0000\u0ebd\u0ebe\u0005\u0018\u0000"+
56637 		"\u0000\u0ebe\u0ebf\u0005\u001f\u0000\u0000\u0ebf\u0ec0\u0003\u02dc\u016e"+
56638 		"\u0000\u0ec0\u0ec1\u0005 \u0000\u0000\u0ec1\u0ec3\u0001\u0000\u0000\u0000"+
56639 		"\u0ec2\u0ead\u0001\u0000\u0000\u0000\u0ec2\u0eb8\u0001\u0000\u0000\u0000"+
56640 		"\u0ec2\u0ebb\u0001\u0000\u0000\u0000\u0ec2\u0ebd\u0001\u0000\u0000\u0000"+
56641 		"\u0ec3\u0229\u0001\u0000\u0000\u0000\u0ec4\u0ed8\u0003\u00eau\u0000\u0ec5"+
56642 		"\u0ec6\u0005\u00ce\u0000\u0000\u0ec6\u0ec7\u0003\u022c\u0116\u0000\u0ec7"+
56643 		"\u0ec8\u0005f\u0000\u0000\u0ec8\u0ec9\u0003\u02dc\u016e\u0000\u0ec9\u0ed5"+
56644 		"\u0005f\u0000\u0000\u0eca\u0ed6\u0005\u00cb\u0000\u0000\u0ecb\u0ecc\u0005"+
56645 		"0\u0000\u0000\u0ecc\u0ecd\u0005\u00cf\u0000\u0000\u0ecd\u0ed2\u0003N\'"+
56646 		"\u0000\u0ece\u0ecf\u0005%\u0000\u0000\u0ecf\u0ed1\u0003N\'\u0000\u0ed0"+
56647 		"\u0ece\u0001\u0000\u0000\u0000\u0ed1\u0ed4\u0001\u0000\u0000\u0000\u0ed2"+
56648 		"\u0ed0\u0001\u0000\u0000\u0000\u0ed2\u0ed3\u0001\u0000\u0000\u0000\u0ed3"+
56649 		"\u0ed6\u0001\u0000\u0000\u0000\u0ed4\u0ed2\u0001\u0000\u0000\u0000\u0ed5"+
56650 		"\u0eca\u0001\u0000\u0000\u0000\u0ed5\u0ecb\u0001\u0000\u0000\u0000\u0ed6"+
56651 		"\u0ed8\u0001\u0000\u0000\u0000\u0ed7\u0ec4\u0001\u0000\u0000\u0000\u0ed7"+
56652 		"\u0ec5\u0001\u0000\u0000\u0000\u0ed8\u022b\u0001\u0000\u0000\u0000\u0ed9"+
56653 		"\u0edb\u00075\u0000\u0000\u0eda\u0ed9\u0001\u0000\u0000\u0000\u0eda\u0edb"+
56654 		"\u0001\u0000\u0000\u0000\u0edb\u0edd\u0001\u0000\u0000\u0000\u0edc\u0ede"+
56655 		"\u00076\u0000\u0000\u0edd\u0edc\u0001\u0000\u0000\u0000\u0edd\u0ede\u0001"+
56656 		"\u0000\u0000\u0000\u0ede\u0ee0\u0001\u0000\u0000\u0000\u0edf\u0ee1\u0007"+
56657 		"7\u0000\u0000\u0ee0\u0edf\u0001\u0000\u0000\u0000\u0ee0\u0ee1\u0001\u0000"+
56658 		"\u0000\u0000\u0ee1\u0ee3\u0001\u0000\u0000\u0000\u0ee2\u0ee4\u0005\u020f"+
56659 		"\u0000\u0000\u0ee3\u0ee2\u0001\u0000\u0000\u0000\u0ee3\u0ee4\u0001\u0000"+
56660 		"\u0000\u0000\u0ee4\u022d\u0001\u0000\u0000\u0000\u0ee5\u0ee6\u0005\u000f"+
56661 		"\u0000\u0000\u0ee6\u0ef6\u0005\u0018\u0000\u0000\u0ee7\u0ee8\u0005\u0010"+
56662 		"\u0000\u0000\u0ee8\u0ef6\u0005\u0018\u0000\u0000\u0ee9\u0eea\u0005\u0011"+
56663 		"\u0000\u0000\u0eea\u0ef6\u0005\u0018\u0000\u0000\u0eeb\u0eec\u0005\u0012"+
56664 		"\u0000\u0000\u0eec\u0ef6\u0005\u0018\u0000\u0000\u0eed\u0eee\u0005\r\u0000"+
56665 		"\u0000\u0eee\u0ef6\u0005\u0018\u0000\u0000\u0eef\u0ef0\u0005\t\u0000\u0000"+
56666 		"\u0ef0\u0ef6\u0005\u0018\u0000\u0000\u0ef1\u0ef2\u0005\f\u0000\u0000\u0ef2"+
56667 		"\u0ef6\u0005\u0018\u0000\u0000\u0ef3\u0ef4\u0005\b\u0000\u0000\u0ef4\u0ef6"+
56668 		"\u0005\u0018\u0000\u0000\u0ef5\u0ee5\u0001\u0000\u0000\u0000\u0ef5\u0ee7"+
56669 		"\u0001\u0000\u0000\u0000\u0ef5\u0ee9\u0001\u0000\u0000\u0000\u0ef5\u0eeb"+
56670 		"\u0001\u0000\u0000\u0000\u0ef5\u0eed\u0001\u0000\u0000\u0000\u0ef5\u0eef"+
56671 		"\u0001\u0000\u0000\u0000\u0ef5\u0ef1\u0001\u0000\u0000\u0000\u0ef5\u0ef3"+
56672 		"\u0001\u0000\u0000\u0000\u0ef6\u022f\u0001\u0000\u0000\u0000\u0ef7\u0f0b"+
56673 		"\u0005\u001f\u0000\u0000\u0ef8\u0efa\u0003\u00eau\u0000\u0ef9\u0efb\u0005"+
56674 		"`\u0000\u0000\u0efa\u0ef9\u0001\u0000\u0000\u0000\u0efa\u0efb\u0001\u0000"+
56675 		"\u0000\u0000\u0efb\u0eff\u0001\u0000\u0000\u0000\u0efc\u0efd\u0003L&\u0000"+
56676 		"\u0efd\u0efe\u0005\u0014\u0000\u0000\u0efe\u0f00\u0001\u0000\u0000\u0000"+
56677 		"\u0eff\u0efc\u0001\u0000\u0000\u0000\u0eff\u0f00\u0001\u0000\u0000\u0000"+
56678 		"\u0f00\u0f01\u0001\u0000\u0000\u0000\u0f01\u0f04\u0003\u00acV\u0000\u0f02"+
56679 		"\u0f03\u0005\u0018\u0000\u0000\u0f03\u0f05\u0003\u00e4r\u0000\u0f04\u0f02"+
56680 		"\u0001\u0000\u0000\u0000\u0f04\u0f05\u0001\u0000\u0000\u0000\u0f05\u0f07"+
56681 		"\u0001\u0000\u0000\u0000\u0f06\u0f08\u0005\u00d3\u0000\u0000\u0f07\u0f06"+
56682 		"\u0001\u0000\u0000\u0000\u0f07\u0f08\u0001\u0000\u0000\u0000\u0f08\u0f0a"+
56683 		"\u0001\u0000\u0000\u0000\u0f09\u0ef8\u0001\u0000\u0000\u0000\u0f0a\u0f0d"+
56684 		"\u0001\u0000\u0000\u0000\u0f0b\u0f09\u0001\u0000\u0000\u0000\u0f0b\u0f0c"+
56685 		"\u0001\u0000\u0000\u0000\u0f0c\u0f0e\u0001\u0000\u0000\u0000\u0f0d\u0f0b"+
56686 		"\u0001\u0000\u0000\u0000\u0f0e\u0f0f\u0005 \u0000\u0000\u0f0f\u0231\u0001"+
56687 		"\u0000\u0000\u0000\u0f10\u0f14\u0003\u0238\u011c\u0000\u0f11\u0f14\u0003"+
56688 		"\u0236\u011b\u0000\u0f12\u0f14\u0003\u0234\u011a\u0000\u0f13\u0f10\u0001"+
56689 		"\u0000\u0000\u0000\u0f13\u0f11\u0001\u0000\u0000\u0000\u0f13\u0f12\u0001"+
56690 		"\u0000\u0000\u0000\u0f14\u0233\u0001\u0000\u0000\u0000\u0f15\u0f16\u0005"+
56691 		"\u00d0\u0000\u0000\u0f16\u0f17\u0003\u00eau\u0000\u0f17\u0f18\u0005;\u0000"+
56692 		"\u0000\u0f18\u0f22\u0003\u0150\u00a8\u0000\u0f19\u0f1a\u0005M\u0000\u0000"+
56693 		"\u0f1a\u0f1f\u0003\u023e\u011f\u0000\u0f1b\u0f1c\u0005%\u0000\u0000\u0f1c"+
56694 		"\u0f1e\u0003\u023e\u011f\u0000\u0f1d\u0f1b\u0001\u0000\u0000\u0000\u0f1e"+
56695 		"\u0f21\u0001\u0000\u0000\u0000\u0f1f\u0f1d\u0001\u0000\u0000\u0000\u0f1f"+
56696 		"\u0f20\u0001\u0000\u0000\u0000\u0f20\u0f23\u0001\u0000\u0000\u0000\u0f21"+
56697 		"\u0f1f\u0001\u0000\u0000\u0000\u0f22\u0f19\u0001\u0000\u0000\u0000\u0f22"+
56698 		"\u0f23\u0001\u0000\u0000\u0000\u0f23\u0f25\u0001\u0000\u0000\u0000\u0f24"+
56699 		"\u0f26\u0005`\u0000\u0000\u0f25\u0f24\u0001\u0000\u0000\u0000\u0f25\u0f26"+
56700 		"\u0001\u0000\u0000\u0000\u0f26\u0f27\u0001\u0000\u0000\u0000\u0f27\u0f28"+
56701 		"\u0005}\u0000\u0000\u0f28\u0f29\u0003\u023c\u011e\u0000\u0f29\u0f2a\u0005"+
56702 		"\u00d2\u0000\u0000\u0f2a\u0f2b\u0005\u011d\u0000\u0000\u0f2b\u0235\u0001"+
56703 		"\u0000\u0000\u0000\u0f2c\u0f2d\u0005\u00d0\u0000\u0000\u0f2d\u0f37\u0005"+
56704 		";\u0000\u0000\u0f2e\u0f2f\u0005M\u0000\u0000\u0f2f\u0f34\u0003\u023e\u011f"+
56705 		"\u0000\u0f30\u0f31\u0005%\u0000\u0000\u0f31\u0f33\u0003\u023e\u011f\u0000"+
56706 		"\u0f32\u0f30\u0001\u0000\u0000\u0000\u0f33\u0f36\u0001\u0000\u0000\u0000"+
56707 		"\u0f34\u0f32\u0001\u0000\u0000\u0000\u0f34\u0f35\u0001\u0000\u0000\u0000"+
56708 		"\u0f35\u0f38\u0001\u0000\u0000\u0000\u0f36\u0f34\u0001\u0000\u0000\u0000"+
56709 		"\u0f37\u0f2e\u0001\u0000\u0000\u0000\u0f37\u0f38\u0001\u0000\u0000\u0000"+
56710 		"\u0f38\u0f3a\u0001\u0000\u0000\u0000\u0f39\u0f3b\u0005`\u0000\u0000\u0f3a"+
56711 		"\u0f39\u0001\u0000\u0000\u0000\u0f3a\u0f3b\u0001\u0000\u0000\u0000\u0f3b"+
56712 		"\u0f3c\u0001\u0000\u0000\u0000\u0f3c\u0f3e\u0005\u00d2\u0000\u0000\u0f3d"+
56713 		"\u0f3f\u0005\u001f\u0000\u0000\u0f3e\u0f3d\u0001\u0000\u0000\u0000\u0f3e"+
56714 		"\u0f3f\u0001\u0000\u0000\u0000\u0f3f\u0f40\u0001\u0000\u0000\u0000\u0f40"+
56715 		"\u0f42\u0003\u02dc\u016e\u0000\u0f41\u0f43\u0005 \u0000\u0000\u0f42\u0f41"+
56716 		"\u0001\u0000\u0000\u0000\u0f42\u0f43\u0001\u0000\u0000\u0000\u0f43\u0237"+
56717 		"\u0001\u0000\u0000\u0000\u0f44\u0f45\u0005\u00d0\u0000\u0000\u0f45\u0f4f"+
56718 		"\u0003\u00acV\u0000\u0f46\u0f47\u0005M\u0000\u0000\u0f47\u0f4c\u0003\u023e"+
56719 		"\u011f\u0000\u0f48\u0f49\u0005%\u0000\u0000\u0f49\u0f4b\u0003\u023e\u011f"+
56720 		"\u0000\u0f4a\u0f48\u0001\u0000\u0000\u0000\u0f4b\u0f4e\u0001\u0000\u0000"+
56721 		"\u0000\u0f4c\u0f4a\u0001\u0000\u0000\u0000\u0f4c\u0f4d\u0001\u0000\u0000"+
56722 		"\u0000\u0f4d\u0f50\u0001\u0000\u0000\u0000\u0f4e\u0f4c\u0001\u0000\u0000"+
56723 		"\u0000\u0f4f\u0f46\u0001\u0000\u0000\u0000\u0f4f\u0f50\u0001\u0000\u0000"+
56724 		"\u0000\u0f50\u0f52\u0001\u0000\u0000\u0000\u0f51\u0f53\u0005`\u0000\u0000"+
56725 		"\u0f52\u0f51\u0001\u0000\u0000\u0000\u0f52\u0f53\u0001\u0000\u0000\u0000"+
56726 		"\u0f53\u0f54\u0001\u0000\u0000\u0000\u0f54\u0f55\u0005}\u0000\u0000\u0f55"+
56727 		"\u0f56\u0003\u023c\u011e\u0000\u0f56\u0f57\u0005\u00d2\u0000\u0000\u0f57"+
56728 		"\u0f58\u0003b1\u0000\u0f58\u0239\u0001\u0000\u0000\u0000\u0f59\u0f5a\u0003"+
56729 		"\u0154\u00aa\u0000\u0f5a\u0f5b\u0003\u015a\u00ad\u0000\u0f5b\u0f5e\u0001"+
56730 		"\u0000\u0000\u0000\u0f5c\u0f5e\u0003\u018a\u00c5\u0000\u0f5d\u0f59\u0001"+
56731 		"\u0000\u0000\u0000\u0f5d\u0f5c\u0001\u0000\u0000\u0000\u0f5e\u0f62\u0001"+
56732 		"\u0000\u0000\u0000\u0f5f\u0f61\u0003\u018e\u00c7\u0000\u0f60\u0f5f\u0001"+
56733 		"\u0000\u0000\u0000\u0f61\u0f64\u0001\u0000\u0000\u0000\u0f62\u0f60\u0001"+
56734 		"\u0000\u0000\u0000\u0f62\u0f63\u0001\u0000\u0000\u0000\u0f63\u023b\u0001"+
56735 		"\u0000\u0000\u0000\u0f64\u0f62\u0001\u0000\u0000\u0000\u0f65\u0f67\u0003"+
56736 		"\u0240\u0120\u0000\u0f66\u0f65\u0001\u0000\u0000\u0000\u0f67\u0f6a\u0001"+
56737 		"\u0000\u0000\u0000\u0f68\u0f66\u0001\u0000\u0000\u0000\u0f68\u0f69\u0001"+
56738 		"\u0000\u0000\u0000\u0f69\u023d\u0001\u0000\u0000\u0000\u0f6a\u0f68\u0001"+
56739 		"\u0000\u0000\u0000\u0f6b\u0f6d\u0005\u0175\u0000\u0000\u0f6c\u0f6b\u0001"+
56740 		"\u0000\u0000\u0000\u0f6c\u0f6d\u0001\u0000\u0000\u0000\u0f6d\u0f85\u0001"+
56741 		"\u0000\u0000\u0000\u0f6e\u0f70\u0005\u0210\u0000\u0000\u0f6f\u0f6e\u0001"+
56742 		"\u0000\u0000\u0000\u0f6f\u0f70\u0001\u0000\u0000\u0000\u0f70\u0f85\u0001"+
56743 		"\u0000\u0000\u0000\u0f71\u0f72\u0005\u00d0\u0000\u0000\u0f72\u0f73\u0005"+
56744 		"l\u0000\u0000\u0f73\u0f74\u0005a\u0000\u0000\u0f74\u0f75\u0005l\u0000"+
56745 		"\u0000\u0f75\u0f7b\u0005\u0212\u0000\u0000\u0f76\u0f77\u0005\u0213\u0000"+
56746 		"\u0000\u0f77\u0f78\u0005a\u0000\u0000\u0f78\u0f79\u0005l\u0000\u0000\u0f79"+
56747 		"\u0f7b\u0005\u0212\u0000\u0000\u0f7a\u0f71\u0001\u0000\u0000\u0000\u0f7a"+
56748 		"\u0f76\u0001\u0000\u0000\u0000\u0f7a\u0f7b\u0001\u0000\u0000\u0000\u0f7b"+
56749 		"\u0f85\u0001\u0000\u0000\u0000\u0f7c\u0f7e\u0003\u00ecv\u0000\u0f7d\u0f7c"+
56750 		"\u0001\u0000\u0000\u0000\u0f7d\u0f7e\u0001\u0000\u0000\u0000\u0f7e\u0f85"+
56751 		"\u0001\u0000\u0000\u0000\u0f7f\u0f80\u0005\u0292\u0000\u0000\u0f80\u0f81"+
56752 		"\u0005\u0018\u0000\u0000\u0f81\u0f83\u0007\u0000\u0000\u0000\u0f82\u0f7f"+
56753 		"\u0001\u0000\u0000\u0000\u0f82\u0f83\u0001\u0000\u0000\u0000\u0f83\u0f85"+
56754 		"\u0001\u0000\u0000\u0000\u0f84\u0f6c\u0001\u0000\u0000\u0000\u0f84\u0f6f"+
56755 		"\u0001\u0000\u0000\u0000\u0f84\u0f7a\u0001\u0000\u0000\u0000\u0f84\u0f7d"+
56756 		"\u0001\u0000\u0000\u0000\u0f84\u0f82\u0001\u0000\u0000\u0000\u0f85\u023f"+
56757 		"\u0001\u0000\u0000\u0000\u0f86\u0f91\u0003\u0102\u0081\u0000\u0f87\u0f91"+
56758 		"\u0003\u0118\u008c\u0000\u0f88\u0f91\u0003\u012c\u0096\u0000\u0f89\u0f91"+
56759 		"\u0003\u0140\u00a0\u0000\u0f8a\u0f91\u0003\u02ba\u015d\u0000\u0f8b\u0f91"+
56760 		"\u0003\u02c8\u0164\u0000\u0f8c\u0f91\u0003\u02d2\u0169\u0000\u0f8d\u0f91"+
56761 		"\u0003\u02dc\u016e\u0000\u0f8e\u0f91\u0003\u0226\u0113\u0000\u0f8f\u0f91"+
56762 		"\u0003\u0216\u010b\u0000\u0f90\u0f86\u0001\u0000\u0000\u0000\u0f90\u0f87"+
56763 		"\u0001\u0000\u0000\u0000\u0f90\u0f88\u0001\u0000\u0000\u0000\u0f90\u0f89"+
56764 		"\u0001\u0000\u0000\u0000\u0f90\u0f8a\u0001\u0000\u0000\u0000\u0f90\u0f8b"+
56765 		"\u0001\u0000\u0000\u0000\u0f90\u0f8c\u0001\u0000\u0000\u0000\u0f90\u0f8d"+
56766 		"\u0001\u0000\u0000\u0000\u0f90\u0f8e\u0001\u0000\u0000\u0000\u0f90\u0f8f"+
56767 		"\u0001\u0000\u0000\u0000\u0f91\u0f93\u0001\u0000\u0000\u0000\u0f92\u0f94"+
56768 		"\u0005+\u0000\u0000\u0f93\u0f92\u0001\u0000\u0000\u0000\u0f93\u0f94\u0001"+
56769 		"\u0000\u0000\u0000\u0f94\u0241\u0001\u0000\u0000\u0000\u0f95\u0f9a\u0003"+
56770 		"\u0244\u0122\u0000\u0f96\u0f97\u0005%\u0000\u0000\u0f97\u0f99\u0003\u0244"+
56771 		"\u0122\u0000\u0f98\u0f96\u0001\u0000\u0000\u0000\u0f99\u0f9c\u0001\u0000"+
56772 		"\u0000\u0000\u0f9a\u0f98\u0001\u0000\u0000\u0000\u0f9a\u0f9b\u0001\u0000"+
56773 		"\u0000\u0000\u0f9b\u0f9e\u0001\u0000\u0000\u0000\u0f9c\u0f9a\u0001\u0000"+
56774 		"\u0000\u0000\u0f9d\u0f95\u0001\u0000\u0000\u0000\u0f9d\u0f9e\u0001\u0000"+
56775 		"\u0000\u0000\u0f9e\u0243\u0001\u0000\u0000\u0000\u0f9f\u0fa1\u0003\u0218"+
56776 		"\u010c\u0000\u0fa0\u0fa2\u0005\u0214\u0000\u0000\u0fa1\u0fa0\u0001\u0000"+
56777 		"\u0000\u0000\u0fa1\u0fa2\u0001\u0000\u0000\u0000\u0fa2\u0fa5\u0001\u0000"+
56778 		"\u0000\u0000\u0fa3\u0fa4\u0005\u0018\u0000\u0000\u0fa4\u0fa6\u0003\u001a"+
56779 		"\r\u0000\u0fa5\u0fa3\u0001\u0000\u0000\u0000\u0fa5\u0fa6\u0001\u0000\u0000"+
56780 		"\u0000\u0fa6\u0fa8\u0001\u0000\u0000\u0000\u0fa7\u0fa9\u00078\u0000\u0000"+
56781 		"\u0fa8\u0fa7\u0001\u0000\u0000\u0000\u0fa8\u0fa9\u0001\u0000\u0000\u0000"+
56782 		"\u0fa9\u0245\u0001\u0000\u0000\u0000\u0faa\u0fac\u0003\u0248\u0124\u0000"+
56783 		"\u0fab\u0faa\u0001\u0000\u0000\u0000\u0fab\u0fac\u0001\u0000\u0000\u0000"+
56784 		"\u0fac\u0faf\u0001\u0000\u0000\u0000\u0fad\u0fae\u0005f\u0000\u0000\u0fae"+
56785 		"\u0fb0\u0005\u013b\u0000\u0000\u0faf\u0fad\u0001\u0000\u0000\u0000\u0faf"+
56786 		"\u0fb0\u0001\u0000\u0000\u0000\u0fb0\u0fb1\u0001\u0000\u0000\u0000\u0fb1"+
56787 		"\u0fb2\u0005`\u0000\u0000\u0fb2\u0fb3\u0003\u024c\u0126\u0000\u0fb3\u0247"+
56788 		"\u0001\u0000\u0000\u0000\u0fb4\u0fbd\u0005M\u0000\u0000\u0fb5\u0fba\u0003"+
56789 		"\u024a\u0125\u0000\u0fb6\u0fb7\u0005%\u0000\u0000\u0fb7\u0fb9\u0003\u024a"+
56790 		"\u0125\u0000\u0fb8\u0fb6\u0001\u0000\u0000\u0000\u0fb9\u0fbc\u0001\u0000"+
56791 		"\u0000\u0000\u0fba\u0fb8\u0001\u0000\u0000\u0000\u0fba\u0fbb\u0001\u0000"+
56792 		"\u0000\u0000\u0fbb\u0fbe\u0001\u0000\u0000\u0000\u0fbc\u0fba\u0001\u0000"+
56793 		"\u0000\u0000\u0fbd\u0fb5\u0001\u0000\u0000\u0000\u0fbd\u0fbe\u0001\u0000"+
56794 		"\u0000\u0000\u0fbe\u0249\u0001\u0000\u0000\u0000\u0fbf\u0fc5\u0005\u0175"+
56795 		"\u0000\u0000\u0fc0\u0fc5\u0005\u01f0\u0000\u0000\u0fc1\u0fc5\u0003\u00ec"+
56796 		"v\u0000\u0fc2\u0fc5\u0005\u021f\u0000\u0000\u0fc3\u0fc5\u0005\u0210\u0000"+
56797 		"\u0000\u0fc4\u0fbf\u0001\u0000\u0000\u0000\u0fc4\u0fc0\u0001\u0000\u0000"+
56798 		"\u0000\u0fc4\u0fc1\u0001\u0000\u0000\u0000\u0fc4\u0fc2\u0001\u0000\u0000"+
56799 		"\u0000\u0fc4\u0fc3\u0001\u0000\u0000\u0000\u0fc5\u024b\u0001\u0000\u0000"+
56800 		"\u0000\u0fc6\u0fc8\u0005}\u0000\u0000\u0fc7\u0fc6\u0001\u0000\u0000\u0000"+
56801 		"\u0fc7\u0fc8\u0001\u0000\u0000\u0000\u0fc8\u0fc9\u0001\u0000\u0000\u0000"+
56802 		"\u0fc9\u0fcb\u0003\u023c\u011e\u0000\u0fca\u0fcc\u0005\u011d\u0000\u0000"+
56803 		"\u0fcb\u0fca\u0001\u0000\u0000\u0000\u0fcb\u0fcc\u0001\u0000\u0000\u0000"+
56804 		"\u0fcc\u0fea\u0001\u0000\u0000\u0000\u0fcd\u0fce\u0005\u0168\u0000\u0000"+
56805 		"\u0fce\u0fd2\u0005\u00aa\u0000\u0000\u0fcf\u0fd0\u0003L&\u0000\u0fd0\u0fd1"+
56806 		"\u0005\u0014\u0000\u0000\u0fd1\u0fd3\u0001\u0000\u0000\u0000\u0fd2\u0fcf"+
56807 		"\u0001\u0000\u0000\u0000\u0fd2\u0fd3\u0001\u0000\u0000\u0000\u0fd3\u0fd7"+
56808 		"\u0001\u0000\u0000\u0000\u0fd4\u0fd5\u0003L&\u0000\u0fd5\u0fd6\u0005\u0014"+
56809 		"\u0000\u0000\u0fd6\u0fd8\u0001\u0000\u0000\u0000\u0fd7\u0fd4\u0001\u0000"+
56810 		"\u0000\u0000\u0fd7\u0fd8\u0001\u0000\u0000\u0000\u0fd8\u0fd9\u0001\u0000"+
56811 		"\u0000\u0000\u0fd9\u0fea\u0003N\'\u0000\u0fda\u0fdb\u0005}\u0000\u0000"+
56812 		"\u0fdb\u0fdc\u0005\u0217\u0000\u0000\u0fdc\u0fdd\u0005M\u0000\u0000\u0fdd"+
56813 		"\u0fe2\u0003\u024e\u0127\u0000\u0fde\u0fdf\u0005%\u0000\u0000\u0fdf\u0fe1"+
56814 		"\u0003\u024e\u0127\u0000\u0fe0\u0fde\u0001\u0000\u0000\u0000\u0fe1\u0fe4"+
56815 		"\u0001\u0000\u0000\u0000\u0fe2\u0fe0\u0001\u0000\u0000\u0000\u0fe2\u0fe3"+
56816 		"\u0001\u0000\u0000\u0000\u0fe3\u0fe5\u0001\u0000\u0000\u0000\u0fe4\u0fe2"+
56817 		"\u0001\u0000\u0000\u0000\u0fe5\u0fe7\u0003\u023c\u011e\u0000\u0fe6\u0fe8"+
56818 		"\u0005\u011d\u0000\u0000\u0fe7\u0fe6\u0001\u0000\u0000\u0000\u0fe7\u0fe8"+
56819 		"\u0001\u0000\u0000\u0000\u0fe8\u0fea\u0001\u0000\u0000\u0000\u0fe9\u0fc7"+
56820 		"\u0001\u0000\u0000\u0000\u0fe9\u0fcd\u0001\u0000\u0000\u0000\u0fe9\u0fda"+
56821 		"\u0001\u0000\u0000\u0000\u0fea\u024d\u0001\u0000\u0000\u0000\u0feb\u0fec"+
56822 		"\u0005\u0218\u0000\u0000\u0fec\u0fed\u0005\u0018\u0000\u0000\u0fed\u1002"+
56823 		"\u0003\u001c\u000e\u0000\u0fee\u0fef\u0005\u0107\u0000\u0000\u0fef\u0ff0"+
56824 		"\u0005\u021a\u0000\u0000\u0ff0\u0ff1\u0005\u0219\u0000\u0000\u0ff1\u0ff6"+
56825 		"\u0005\u0018\u0000\u0000\u0ff2\u0ff7\u0005\u021b\u0000\u0000\u0ff3\u0ff4"+
56826 		"\u0005\u021c\u0000\u0000\u0ff4\u0ff7\u0005\u021d\u0000\u0000\u0ff5\u0ff7"+
56827 		"\u0005\u021e\u0000\u0000\u0ff6\u0ff2\u0001\u0000\u0000\u0000\u0ff6\u0ff3"+
56828 		"\u0001\u0000\u0000\u0000\u0ff6\u0ff5\u0001\u0000\u0000\u0000\u0ff7\u1002"+
56829 		"\u0001\u0000\u0000\u0000\u0ff8\u0ff9\u0005\u028b\u0000\u0000\u0ff9\u0ffa"+
56830 		"\u0005\u0018\u0000\u0000\u0ffa\u1002\u0003\u001e\u000f\u0000\u0ffb\u0ffc"+
56831 		"\u0005\u0298\u0000\u0000\u0ffc\u0ffd\u0005\u0018\u0000\u0000\u0ffd\u1002"+
56832 		"\u0003\u001c\u000e\u0000\u0ffe\u0fff\u0005\u0299\u0000\u0000\u0fff\u1000"+
56833 		"\u0005\u0018\u0000\u0000\u1000\u1002\u0007\u0000\u0000\u0000\u1001\u0feb"+
56834 		"\u0001\u0000\u0000\u0000\u1001\u0fee\u0001\u0000\u0000\u0000\u1001\u0ff8"+
56835 		"\u0001\u0000\u0000\u0000\u1001\u0ffb\u0001\u0000\u0000\u0000\u1001\u0ffe"+
56836 		"\u0001\u0000\u0000\u0000\u1002\u024f\u0001\u0000\u0000\u0000\u1003\u1004"+
56837 		"\u0005M\u0000\u0000\u1004\u1009\u0003\u0252\u0129\u0000\u1005\u1006\u0005"+
56838 		"%\u0000\u0000\u1006\u1008\u0003\u0252\u0129\u0000\u1007\u1005\u0001\u0000"+
56839 		"\u0000\u0000\u1008\u100b\u0001\u0000\u0000\u0000\u1009\u1007\u0001\u0000"+
56840 		"\u0000\u0000\u1009\u100a\u0001\u0000\u0000\u0000\u100a\u100d\u0001\u0000"+
56841 		"\u0000\u0000\u100b\u1009\u0001\u0000\u0000\u0000\u100c\u1003\u0001\u0000"+
56842 		"\u0000\u0000\u100c\u100d\u0001\u0000\u0000\u0000\u100d\u100e\u0001\u0000"+
56843 		"\u0000\u0000\u100e\u1010\u0005`\u0000\u0000\u100f\u1011\u0003\u0254\u012a"+
56844 		"\u0000\u1010\u100f\u0001\u0000\u0000\u0000\u1010\u1011\u0001\u0000\u0000"+
56845 		"\u0000\u1011\u1012\u0001\u0000\u0000\u0000\u1012\u1016\u0003\u02dc\u016e"+
56846 		"\u0000\u1013\u1014\u0005M\u0000\u0000\u1014\u1015\u0005\u00fe\u0000\u0000"+
56847 		"\u1015\u1017\u0005\u0101\u0000\u0000\u1016\u1013\u0001\u0000\u0000\u0000"+
56848 		"\u1016\u1017\u0001\u0000\u0000\u0000\u1017\u0251\u0001\u0000\u0000\u0000"+
56849 		"\u1018\u1019\u00079\u0000\u0000\u1019\u0253\u0001\u0000\u0000\u0000\u101a"+
56850 		"\u101b\u0005M\u0000\u0000\u101b\u1020\u0003\u0256\u012b\u0000\u101c\u101d"+
56851 		"\u0005%\u0000\u0000\u101d\u101f\u0003\u0256\u012b\u0000\u101e\u101c\u0001"+
56852 		"\u0000\u0000\u0000\u101f\u1022\u0001\u0000\u0000\u0000\u1020\u101e\u0001"+
56853 		"\u0000\u0000\u0000\u1020\u1021\u0001\u0000\u0000\u0000\u1021\u0255\u0001"+
56854 		"\u0000\u0000\u0000\u1022\u1020\u0001\u0000\u0000\u0000\u1023\u102f\u0003"+
56855 		"N\'\u0000\u1024\u1025\u0005\u001f\u0000\u0000\u1025\u102a\u0003H$\u0000"+
56856 		"\u1026\u1027\u0005%\u0000\u0000\u1027\u1029\u0003H$\u0000\u1028\u1026"+
56857 		"\u0001\u0000\u0000\u0000\u1029\u102c\u0001\u0000\u0000\u0000\u102a\u1028"+
56858 		"\u0001\u0000\u0000\u0000\u102a\u102b\u0001\u0000\u0000\u0000\u102b\u102d"+
56859 		"\u0001\u0000\u0000\u0000\u102c\u102a\u0001\u0000\u0000\u0000\u102d\u102e"+
56860 		"\u0005 \u0000\u0000\u102e\u1030\u0001\u0000\u0000\u0000\u102f\u1024\u0001"+
56861 		"\u0000\u0000\u0000\u102f\u1030\u0001\u0000\u0000\u0000\u1030\u1031\u0001"+
56862 		"\u0000\u0000\u0000\u1031\u1032\u0005`\u0000\u0000\u1032\u1033\u0005\u001f"+
56863 		"\u0000\u0000\u1033\u1034\u0003\u02dc\u016e\u0000\u1034\u1035\u0005 \u0000"+
56864 		"\u0000\u1035\u0257\u0001\u0000\u0000\u0000\u1036\u1037\u0005M\u0000\u0000"+
56865 		"\u1037\u1038\u0003\u025a\u012d\u0000\u1038\u1039\u0005%\u0000\u0000\u1039"+
56866 		"\u103a\u0003\u025a\u012d\u0000\u103a\u103c\u0001\u0000\u0000\u0000\u103b"+
56867 		"\u1036\u0001\u0000\u0000\u0000\u103b\u103c\u0001\u0000\u0000\u0000\u103c"+
56868 		"\u1041\u0001\u0000\u0000\u0000\u103d\u1042\u0005f\u0000\u0000\u103e\u1042"+
56869 		"\u0005\u0221\u0000\u0000\u103f\u1040\u0005\u0222\u0000\u0000\u1040\u1042"+
56870 		"\u0005\u00cf\u0000\u0000\u1041\u103d\u0001\u0000\u0000\u0000\u1041\u103e"+
56871 		"\u0001\u0000\u0000\u0000\u1041\u103f\u0001\u0000\u0000\u0000\u1042\u1044"+
56872 		"\u0001\u0000\u0000\u0000\u1043\u1045\u0005/\u0000\u0000\u1044\u1043\u0001"+
56873 		"\u0000\u0000\u0000\u1044\u1045\u0001\u0000\u0000\u0000\u1045\u1047\u0001"+
56874 		"\u0000\u0000\u0000\u1046\u1048\u0005%\u0000\u0000\u1047\u1046\u0001\u0000"+
56875 		"\u0000\u0000\u1047\u1048\u0001\u0000\u0000\u0000\u1048\u104a\u0001\u0000"+
56876 		"\u0000\u0000\u1049\u104b\u00050\u0000\u0000\u104a\u1049\u0001\u0000\u0000"+
56877 		"\u0000\u104a\u104b\u0001\u0000\u0000\u0000\u104b\u104d\u0001\u0000\u0000"+
56878 		"\u0000\u104c\u104e\u0005%\u0000\u0000\u104d\u104c\u0001\u0000\u0000\u0000"+
56879 		"\u104d\u104e\u0001\u0000\u0000\u0000\u104e\u1050\u0001\u0000\u0000\u0000"+
56880 		"\u104f\u1051\u00051\u0000\u0000\u1050\u104f\u0001\u0000\u0000\u0000\u1050"+
56881 		"\u1051\u0001\u0000\u0000\u0000\u1051\u1053\u0001\u0000\u0000\u0000\u1052"+
56882 		"\u1054\u0005%\u0000\u0000\u1053\u1052\u0001\u0000\u0000\u0000\u1053\u1054"+
56883 		"\u0001\u0000\u0000\u0000\u1054\u1057\u0001\u0000\u0000\u0000\u1055\u1056"+
56884 		"\u0005M\u0000\u0000\u1056\u1058\u0005\u0223\u0000\u0000\u1057\u1055\u0001"+
56885 		"\u0000\u0000\u0000\u1057\u1058\u0001\u0000\u0000\u0000\u1058\u105c\u0001"+
56886 		"\u0000\u0000\u0000\u1059\u105a\u0005k\u0000\u0000\u105a\u105b\u0005f\u0000"+
56887 		"\u0000\u105b\u105d\u0005\u013b\u0000\u0000\u105c\u1059\u0001\u0000\u0000"+
56888 		"\u0000\u105c\u105d\u0001\u0000\u0000\u0000\u105d\u105e\u0001\u0000\u0000"+
56889 		"\u0000\u105e\u1063\u0005`\u0000\u0000\u105f\u1064\u0003\u023c\u011e\u0000"+
56890 		"\u1060\u1061\u0005\u0168\u0000\u0000\u1061\u1062\u0005\u00aa\u0000\u0000"+
56891 		"\u1062\u1064\u0003\u025c\u012e\u0000\u1063\u105f\u0001\u0000\u0000\u0000"+
56892 		"\u1063\u1060\u0001\u0000\u0000\u0000\u1064\u0259\u0001\u0000\u0000\u0000"+
56893 		"\u1065\u106b\u0005\u0175\u0000\u0000\u1066\u106b\u0003\u00ecv\u0000\u1067"+
56894 		"\u106b\u0005\u021f\u0000\u0000\u1068\u106b\u0005\u0210\u0000\u0000\u1069"+
56895 		"\u106b\u0001\u0000\u0000\u0000\u106a\u1065\u0001\u0000\u0000\u0000\u106a"+
56896 		"\u1066\u0001\u0000\u0000\u0000\u106a\u1067\u0001\u0000\u0000\u0000\u106a"+
56897 		"\u1068\u0001\u0000\u0000\u0000\u106a\u1069\u0001\u0000\u0000\u0000\u106b"+
56898 		"\u025b\u0001\u0000\u0000\u0000\u106c\u106d\u0003N\'\u0000\u106d\u106e"+
56899 		"\u0005\u0014\u0000\u0000\u106e\u106f\u0003N\'\u0000\u106f\u1070\u0005"+
56900 		"\u0014\u0000\u0000\u1070\u1071\u0003N\'\u0000\u1071\u025d\u0001\u0000"+
56901 		"\u0000\u0000\u1072\u1078\u0003@ \u0000\u1073\u1078\u0003:\u001d\u0000"+
56902 		"\u1074\u1075\u0005r\u0000\u0000\u1075\u1078\u0005\u0154\u0000\u0000\u1076"+
56903 		"\u1078\u0005\u00cc\u0000\u0000\u1077\u1072\u0001\u0000\u0000\u0000\u1077"+
56904 		"\u1073\u0001\u0000\u0000\u0000\u1077\u1074\u0001\u0000\u0000\u0000\u1077"+
56905 		"\u1076\u0001\u0000\u0000\u0000\u1078\u025f\u0001\u0000\u0000\u0000\u1079"+
56906 		"\u107a\u0005`\u0000\u0000\u107a\u1096\u0003\u00acV\u0000\u107b\u107c\u0007"+
56907 		":\u0000\u0000\u107c\u107d\u0005M\u0000\u0000\u107d\u1096\u0003b1\u0000"+
56908 		"\u107e\u107f\u0005\u0224\u0000\u0000\u107f\u1080\u0005w\u0000\u0000\u1080"+
56909 		"\u1096\u0003b1\u0000\u1081\u1083\u0005\u0227\u0000\u0000\u1082\u1084\u0003"+
56910 		"b1\u0000\u1083\u1082\u0001\u0000\u0000\u0000\u1083\u1084\u0001\u0000\u0000"+
56911 		"\u0000\u1084\u1096\u0001\u0000\u0000\u0000\u1085\u1086\u0005\u0100\u0000"+
56912 		"\u0000\u1086\u1096\u0005\u0227\u0000\u0000\u1087\u1089\u0005\u0228\u0000"+
56913 		"\u0000\u1088\u108a\u0003b1\u0000\u1089\u1088\u0001\u0000\u0000\u0000\u1089"+
56914 		"\u108a\u0001\u0000\u0000\u0000\u108a\u1096\u0001\u0000\u0000\u0000\u108b"+
56915 		"\u108c\u0005\u0100\u0000\u0000\u108c\u1096\u0005\u0228\u0000\u0000\u108d"+
56916 		"\u108e\u0005\u0226\u0000\u0000\u108e\u1096\u0003b1\u0000\u108f\u1090\u0005"+
56917 		"\u0100\u0000\u0000\u1090\u1096\u0005\u0226\u0000\u0000\u1091\u1093\u0005"+
56918 		"\u0100\u0000\u0000\u1092\u1091\u0001\u0000\u0000\u0000\u1092\u1093\u0001"+
56919 		"\u0000\u0000\u0000\u1093\u1094\u0001\u0000\u0000\u0000\u1094\u1096\u0005"+
56920 		"\u0225\u0000\u0000\u1095\u1079\u0001\u0000\u0000\u0000\u1095\u107b\u0001"+
56921 		"\u0000\u0000\u0000\u1095\u107e\u0001\u0000\u0000\u0000\u1095\u1081\u0001"+
56922 		"\u0000\u0000\u0000\u1095\u1085\u0001\u0000\u0000\u0000\u1095\u1087\u0001"+
56923 		"\u0000\u0000\u0000\u1095\u108b\u0001\u0000\u0000\u0000\u1095\u108d\u0001"+
56924 		"\u0000\u0000\u0000\u1095\u108f\u0001\u0000\u0000\u0000\u1095\u1092\u0001"+
56925 		"\u0000\u0000\u0000\u1096\u0261\u0001\u0000\u0000\u0000\u1097\u1098\u0005"+
56926 		"\u0230\u0000\u0000\u1098\u109a\u0003R)\u0000\u1099\u1097\u0001\u0000\u0000"+
56927 		"\u0000\u1099\u109a\u0001\u0000\u0000\u0000\u109a\u109d\u0001\u0000\u0000"+
56928 		"\u0000\u109b\u109c\u0005_\u0000\u0000\u109c\u109e\u0003\u0264\u0132\u0000"+
56929 		"\u109d\u109b\u0001\u0000\u0000\u0000\u109d\u109e\u0001\u0000\u0000\u0000"+
56930 		"\u109e\u10ab\u0001\u0000\u0000\u0000\u109f\u10a0\u0005M\u0000\u0000\u10a0"+
56931 		"\u10a1\u0005\u001f\u0000\u0000\u10a1\u10a6\u0003\u026a\u0135\u0000\u10a2"+
56932 		"\u10a3\u0005%\u0000\u0000\u10a3\u10a5\u0003\u026a\u0135\u0000\u10a4\u10a2"+
56933 		"\u0001\u0000\u0000\u0000\u10a5\u10a8\u0001\u0000\u0000\u0000\u10a6\u10a4"+
56934 		"\u0001\u0000\u0000\u0000\u10a6\u10a7\u0001\u0000\u0000\u0000\u10a7\u10a9"+
56935 		"\u0001\u0000\u0000\u0000\u10a8\u10a6\u0001\u0000\u0000\u0000\u10a9\u10aa"+
56936 		"\u0005 \u0000\u0000\u10aa\u10ac\u0001\u0000\u0000\u0000\u10ab\u109f\u0001"+
56937 		"\u0000\u0000\u0000\u10ab\u10ac\u0001\u0000\u0000\u0000\u10ac\u10b6\u0001"+
56938 		"\u0000\u0000\u0000\u10ad\u10b4\u0005a\u0000\u0000\u10ae\u10af\u00034\u001a"+
56939 		"\u0000\u10af\u10b0\u0005\u001f\u0000\u0000\u10b0\u10b1\u0003H$\u0000\u10b1"+
56940 		"\u10b2\u0005 \u0000\u0000\u10b2\u10b5\u0001\u0000\u0000\u0000\u10b3\u10b5"+
56941 		"\u0003N\'\u0000\u10b4\u10ae\u0001\u0000\u0000\u0000\u10b4\u10b3\u0001"+
56942 		"\u0000\u0000\u0000\u10b5\u10b7\u0001\u0000\u0000\u0000\u10b6\u10ad\u0001"+
56943 		"\u0000\u0000\u0000\u10b6\u10b7\u0001\u0000\u0000\u0000\u10b7\u10bd\u0001"+
56944 		"\u0000\u0000\u0000\u10b8\u10bb\u0005\u01b2\u0000\u0000\u10b9\u10bc\u0003"+
56945 		"N\'\u0000\u10ba\u10bc\u0003\u001c\u000e\u0000\u10bb\u10b9\u0001\u0000"+
56946 		"\u0000\u0000\u10bb\u10ba\u0001\u0000\u0000\u0000\u10bc\u10be\u0001\u0000"+
56947 		"\u0000\u0000\u10bd\u10b8\u0001\u0000\u0000\u0000\u10bd\u10be\u0001\u0000"+
56948 		"\u0000\u0000\u10be\u0263\u0001\u0000\u0000\u0000\u10bf\u10c4\u0003\u0266"+
56949 		"\u0133\u0000\u10c0\u10c1\u0005h\u0000\u0000\u10c1\u10c3\u0003\u0266\u0133"+
56950 		"\u0000\u10c2\u10c0\u0001\u0000\u0000\u0000\u10c3\u10c6\u0001\u0000\u0000"+
56951 		"\u0000\u10c4\u10c2\u0001\u0000\u0000\u0000\u10c4\u10c5\u0001\u0000\u0000"+
56952 		"\u0000\u10c5\u0265\u0001\u0000\u0000\u0000\u10c6\u10c4\u0001\u0000\u0000"+
56953 		"\u0000\u10c7\u10c8\u0003H$\u0000\u10c8\u10c9\u0005q\u0000\u0000\u10c9"+
56954 		"\u10ca\u0005\u001f\u0000\u0000\u10ca\u10cf\u0003b1\u0000\u10cb\u10cc\u0005"+
56955 		"%\u0000\u0000\u10cc\u10ce\u0003b1\u0000\u10cd\u10cb\u0001\u0000\u0000"+
56956 		"\u0000\u10ce\u10d1\u0001\u0000\u0000\u0000\u10cf\u10cd\u0001\u0000\u0000"+
56957 		"\u0000\u10cf\u10d0\u0001\u0000\u0000\u0000\u10d0\u10d2\u0001\u0000\u0000"+
56958 		"\u0000\u10d1\u10cf\u0001\u0000\u0000\u0000\u10d2\u10d3\u0005 \u0000\u0000"+
56959 		"\u10d3\u10d9\u0001\u0000\u0000\u0000\u10d4\u10d5\u0003H$";
56960 	private static final String _serializedATNSegment2 =
56961 		"\u0000\u10d5\u10d6\u0003n7\u0000\u10d6\u10d7\u0003b1\u0000\u10d7\u10d9"+
56962 		"\u0001\u0000\u0000\u0000\u10d8\u10c7\u0001\u0000\u0000\u0000\u10d8\u10d4"+
56963 		"\u0001\u0000\u0000\u0000\u10d9\u0267\u0001\u0000\u0000\u0000\u10da\u10e1"+
56964 		"\u0005\u0139\u0000\u0000\u10db\u10dc\u0005\u00f5\u0000\u0000\u10dc\u10df"+
56965 		"\u0005\u0018\u0000\u0000\u10dd\u10e0\u0005r\u0000\u0000\u10de\u10e0\u0003"+
56966 		"b1\u0000\u10df\u10dd\u0001\u0000\u0000\u0000\u10df\u10de\u0001\u0000\u0000"+
56967 		"\u0000\u10e0\u10e2\u0001\u0000\u0000\u0000\u10e1\u10db\u0001\u0000\u0000"+
56968 		"\u0000\u10e1\u10e2\u0001\u0000\u0000\u0000\u10e2\u10ef\u0001\u0000\u0000"+
56969 		"\u0000\u10e3\u10e4\u0005M\u0000\u0000\u10e4\u10e5\u0005\u001f\u0000\u0000"+
56970 		"\u10e5\u10ea\u0003\u026a\u0135\u0000\u10e6\u10e7\u0005%\u0000\u0000\u10e7"+
56971 		"\u10e9\u0003\u026a\u0135\u0000\u10e8\u10e6\u0001\u0000\u0000\u0000\u10e9"+
56972 		"\u10ec\u0001\u0000\u0000\u0000\u10ea\u10e8\u0001\u0000\u0000\u0000\u10ea"+
56973 		"\u10eb\u0001\u0000\u0000\u0000\u10eb\u10ed\u0001\u0000\u0000\u0000\u10ec"+
56974 		"\u10ea\u0001\u0000\u0000\u0000\u10ed\u10ee\u0005 \u0000\u0000\u10ee\u10f0"+
56975 		"\u0001\u0000\u0000\u0000\u10ef\u10e3\u0001\u0000\u0000\u0000\u10ef\u10f0"+
56976 		"\u0001\u0000\u0000\u0000\u10f0\u1119\u0001\u0000\u0000\u0000\u10f1\u1119"+
56977 		"\u0005\u009d\u0000\u0000\u10f2\u10f6\u0005\u022c\u0000\u0000\u10f3\u10f4"+
56978 		"\u0005\u00f5\u0000\u0000\u10f4\u10f5\u0005\u0018\u0000\u0000\u10f5\u10f7"+
56979 		"\u0003b1\u0000\u10f6\u10f3\u0001\u0000\u0000\u0000\u10f6\u10f7\u0001\u0000"+
56980 		"\u0000\u0000\u10f7\u10fd\u0001\u0000\u0000\u0000\u10f8\u10f9\u0005M\u0000"+
56981 		"\u0000\u10f9\u10fa\u0005\u001f\u0000\u0000\u10fa\u10fb\u0003\u026e\u0137"+
56982 		"\u0000\u10fb\u10fc\u0005 \u0000\u0000\u10fc\u10fe\u0001\u0000\u0000\u0000"+
56983 		"\u10fd\u10f8\u0001\u0000\u0000\u0000\u10fd\u10fe\u0001\u0000\u0000\u0000"+
56984 		"\u10fe\u1119\u0001\u0000\u0000\u0000\u10ff\u1100\u0005:\u0000\u0000\u1100"+
56985 		"\u1101\u0005\u001f\u0000\u0000\u1101\u1102\u0003\u0270\u0138\u0000\u1102"+
56986 		"\u1103\u0005%\u0000\u0000\u1103\u1104\u0003\u0270\u0138\u0000\u1104\u1105"+
56987 		"\u0001\u0000\u0000\u0000\u1105\u1106\u0005 \u0000\u0000\u1106\u1119\u0001"+
56988 		"\u0000\u0000\u0000\u1107\u1114\u0005\u022d\u0000\u0000\u1108\u1109\u0005"+
56989 		"M\u0000\u0000\u1109\u110a\u0005\u001f\u0000\u0000\u110a\u110f\u0003\u0272"+
56990 		"\u0139\u0000\u110b\u110c\u0005%\u0000\u0000\u110c\u110e\u0003\u0272\u0139"+
56991 		"\u0000\u110d\u110b\u0001\u0000\u0000\u0000\u110e\u1111\u0001\u0000\u0000"+
56992 		"\u0000\u110f\u110d\u0001\u0000\u0000\u0000\u110f\u1110\u0001\u0000\u0000"+
56993 		"\u0000\u1110\u1112\u0001\u0000\u0000\u0000\u1111\u110f\u0001\u0000\u0000"+
56994 		"\u0000\u1112\u1113\u0005 \u0000\u0000\u1113\u1115\u0001\u0000\u0000\u0000"+
56995 		"\u1114\u1108\u0001\u0000\u0000\u0000\u1114\u1115\u0001\u0000\u0000\u0000"+
56996 		"\u1115\u1119\u0001\u0000\u0000\u0000\u1116\u1119\u0005\u022e\u0000\u0000"+
56997 		"\u1117\u1119\u0005\u022f\u0000\u0000\u1118\u10da\u0001\u0000\u0000\u0000"+
56998 		"\u1118\u10f1\u0001\u0000\u0000\u0000\u1118\u10f2\u0001\u0000\u0000\u0000"+
56999 		"\u1118\u10ff\u0001\u0000\u0000\u0000\u1118\u1107\u0001\u0000\u0000\u0000"+
57000 		"\u1118\u1116\u0001\u0000\u0000\u0000\u1118\u1117\u0001\u0000\u0000\u0000"+
57001 		"\u1119\u0269\u0001\u0000\u0000\u0000\u111a\u111b\u0005\u01b0\u0000\u0000"+
57002 		"\u111b\u111c\u0005\u0018\u0000\u0000\u111c\u115e\u0007\u0000\u0000\u0000"+
57003 		"\u111d\u111e\u0005\u0120\u0000\u0000\u111e\u111f\u0005\u0018\u0000\u0000"+
57004 		"\u111f\u115e\u0003b1\u0000\u1120\u1121\u0005\u01aa\u0000\u0000\u1121\u1122"+
57005 		"\u0005\u0018\u0000\u0000\u1122\u115e\u0007\u0000\u0000\u0000\u1123\u1124"+
57006 		"\u0005\u01ab\u0000\u0000\u1124\u1125\u0005\u0018\u0000\u0000\u1125\u115e"+
57007 		"\u0007\u0000\u0000\u0000\u1126\u1127\u0005\u01a6\u0000\u0000\u1127\u1128"+
57008 		"\u0005\u0018\u0000\u0000\u1128\u115e\u0007\u0000\u0000\u0000\u1129\u112a"+
57009 		"\u0005\u01a5\u0000\u0000\u112a\u112b\u0005\u0018\u0000\u0000\u112b\u115e"+
57010 		"\u0007\u0000\u0000\u0000\u112c\u112d\u0005\u01bc\u0000\u0000\u112d\u112e"+
57011 		"\u0005\u0018\u0000\u0000\u112e\u115e\u0007\u0000\u0000\u0000\u112f\u1130"+
57012 		"\u0005\u0130\u0000\u0000\u1130\u1136\u0005\u0018\u0000\u0000\u1131\u1133"+
57013 		"\u0005a\u0000\u0000\u1132\u1134\u0003\u00e0p\u0000\u1133\u1132\u0001\u0000"+
57014 		"\u0000\u0000\u1133\u1134\u0001\u0000\u0000\u0000\u1134\u1137\u0001\u0000"+
57015 		"\u0000\u0000\u1135\u1137\u0005b\u0000\u0000\u1136\u1131\u0001\u0000\u0000"+
57016 		"\u0000\u1136\u1135\u0001\u0000\u0000\u0000\u1137\u115e\u0001\u0000\u0000"+
57017 		"\u0000\u1138\u1139\u0005\u013c\u0000\u0000\u1139\u113a\u0005\u0018\u0000"+
57018 		"\u0000\u113a\u115e\u0007\u0000\u0000\u0000\u113b\u113c\u0005\u01ad\u0000"+
57019 		"\u0000\u113c\u113d\u0005\u0018\u0000\u0000\u113d\u113f\u0003b1\u0000\u113e"+
57020 		"\u1140\u0005\u0116\u0000\u0000\u113f\u113e\u0001\u0000\u0000\u0000\u113f"+
57021 		"\u1140\u0001\u0000\u0000\u0000\u1140\u115e\u0001\u0000\u0000\u0000\u1141"+
57022 		"\u1142\u0005\u0196\u0000\u0000\u1142\u1143\u0005\u0018\u0000\u0000\u1143"+
57023 		"\u115e\u0007\u0000\u0000\u0000\u1144\u1145\u0005\u0195\u0000\u0000\u1145"+
57024 		"\u1146\u0005\u0018\u0000\u0000\u1146\u115e\u0007\u0000\u0000\u0000\u1147"+
57025 		"\u1148\u0005\u01f2\u0000\u0000\u1148\u1149\u0005\u0018\u0000\u0000\u1149"+
57026 		"\u115e\u0007\u0000\u0000\u0000\u114a\u114b\u0005\u012b\u0000\u0000\u114b"+
57027 		"\u114c\u0005\u0018\u0000\u0000\u114c\u115e\u0003b1\u0000\u114d\u114e\u0005"+
57028 		"\u019e\u0000\u0000\u114e\u114f\u0005\u0018\u0000\u0000\u114f\u115b\u0007"+
57029 		"\u001c\u0000\u0000\u1150\u1151\u0005a\u0000\u0000\u1151\u1152\u0005\u00f6"+
57030 		"\u0000\u0000\u1152\u1153\u0005\u001f\u0000\u0000\u1153\u1158\u0003\u026c"+
57031 		"\u0136\u0000\u1154\u1155\u0005%\u0000\u0000\u1155\u1157\u0003\u026c\u0136"+
57032 		"\u0000\u1156\u1154\u0001\u0000\u0000\u0000\u1157\u115a\u0001\u0000\u0000"+
57033 		"\u0000\u1158\u1156\u0001\u0000\u0000\u0000\u1158\u1159\u0001\u0000\u0000"+
57034 		"\u0000\u1159\u115c\u0001\u0000\u0000\u0000\u115a\u1158\u0001\u0000\u0000"+
57035 		"\u0000\u115b\u1150\u0001\u0000\u0000\u0000\u115b\u115c\u0001\u0000\u0000"+
57036 		"\u0000\u115c\u115e\u0001\u0000\u0000\u0000\u115d\u111a\u0001\u0000\u0000"+
57037 		"\u0000\u115d\u111d\u0001\u0000\u0000\u0000\u115d\u1120\u0001\u0000\u0000"+
57038 		"\u0000\u115d\u1123\u0001\u0000\u0000\u0000\u115d\u1126\u0001\u0000\u0000"+
57039 		"\u0000\u115d\u1129\u0001\u0000\u0000\u0000\u115d\u112c\u0001\u0000\u0000"+
57040 		"\u0000\u115d\u112f\u0001\u0000\u0000\u0000\u115d\u1138\u0001\u0000\u0000"+
57041 		"\u0000\u115d\u113b\u0001\u0000\u0000\u0000\u115d\u1141\u0001\u0000\u0000"+
57042 		"\u0000\u115d\u1144\u0001\u0000\u0000\u0000\u115d\u1147\u0001\u0000\u0000"+
57043 		"\u0000\u115d\u114a\u0001\u0000\u0000\u0000\u115d\u114d\u0001\u0000\u0000"+
57044 		"\u0000\u115e\u026b\u0001\u0000\u0000\u0000\u115f\u1162\u0003b1\u0000\u1160"+
57045 		"\u1161\u0005g\u0000\u0000\u1161\u1163\u0003b1\u0000\u1162\u1160\u0001"+
57046 		"\u0000\u0000\u0000\u1162\u1163\u0001\u0000\u0000\u0000\u1163\u026d\u0001"+
57047 		"\u0000\u0000\u0000\u1164\u1165\u0005\u022a\u0000\u0000\u1165\u1166\u0005"+
57048 		"\u0018\u0000\u0000\u1166\u116b\u0007\u0000\u0000\u0000\u1167\u1168\u0005"+
57049 		"\u022b\u0000\u0000\u1168\u1169\u0005\u0018\u0000\u0000\u1169\u116b\u0007"+
57050 		"\u0000\u0000\u0000\u116a\u1164\u0001\u0000\u0000\u0000\u116a\u1167\u0001"+
57051 		"\u0000\u0000\u0000\u116b\u026f\u0001\u0000\u0000\u0000\u116c\u116d\u0005"+
57052 		"\u0196\u0000\u0000\u116d\u116e\u0005\u0018\u0000\u0000\u116e\u1182\u0007"+
57053 		"\u0000\u0000\u0000\u116f\u1170\u0005\u0195\u0000\u0000\u1170\u1171\u0005"+
57054 		"\u0018\u0000\u0000\u1171\u1182\u0007\u0000\u0000\u0000\u1172\u1173\u0005"+
57055 		"\u01f2\u0000\u0000\u1173\u1174\u0005\u0018\u0000\u0000\u1174\u1182\u0007"+
57056 		"\u0000\u0000\u0000\u1175\u1176\u0005\u01ab\u0000\u0000\u1176\u1177\u0005"+
57057 		"\u0018\u0000\u0000\u1177\u1182\u0007\u0000\u0000\u0000\u1178\u1179\u0005"+
57058 		"\u01a6\u0000\u0000\u1179\u117a\u0005\u0018\u0000\u0000\u117a\u1182\u0007"+
57059 		"\u0000\u0000\u0000\u117b\u117c\u0005\u019c\u0000\u0000\u117c\u117d\u0005"+
57060 		"\u0018\u0000\u0000\u117d\u117f\u0003b1\u0000\u117e\u1180\u0005\u0116\u0000"+
57061 		"\u0000\u117f\u117e\u0001\u0000\u0000\u0000\u117f\u1180\u0001\u0000\u0000"+
57062 		"\u0000\u1180\u1182\u0001\u0000\u0000\u0000\u1181\u116c\u0001\u0000\u0000"+
57063 		"\u0000\u1181\u116f\u0001\u0000\u0000\u0000\u1181\u1172\u0001\u0000\u0000"+
57064 		"\u0000\u1181\u1175\u0001\u0000\u0000\u0000\u1181\u1178\u0001\u0000\u0000"+
57065 		"\u0000\u1181\u117b\u0001\u0000\u0000\u0000\u1182\u0271\u0001\u0000\u0000"+
57066 		"\u0000\u1183\u1184\u0005\u012b\u0000\u0000\u1184\u1185\u0005\u0018\u0000"+
57067 		"\u0000\u1185\u118e\u0003b1\u0000\u1186\u1187\u0005\u01ad\u0000\u0000\u1187"+
57068 		"\u1188\u0005\u0018\u0000\u0000\u1188\u118a\u0003b1\u0000\u1189\u118b\u0005"+
57069 		"\u0116\u0000\u0000\u118a\u1189\u0001\u0000\u0000\u0000\u118a\u118b\u0001"+
57070 		"\u0000\u0000\u0000\u118b\u118e\u0001\u0000\u0000\u0000\u118c\u118e\u0003"+
57071 		"\u00e0p\u0000\u118d\u1183\u0001\u0000\u0000\u0000\u118d\u1186\u0001\u0000"+
57072 		"\u0000\u0000\u118d\u118c\u0001\u0000\u0000\u0000\u118e\u0273\u0001\u0000"+
57073 		"\u0000\u0000\u118f\u1190\u0005\u0239\u0000\u0000\u1190\u1191\u0005\u00aa"+
57074 		"\u0000\u0000\u1191\u1192\u0005\u0018\u0000\u0000\u1192\u11c6\u00032\u0019"+
57075 		"\u0000\u1193\u1194\u0005\u010e\u0000\u0000\u1194\u11c6\u0003\u00e4r\u0000"+
57076 		"\u1195\u11c6\u0003\u027e\u013f\u0000\u1196\u1197\u0005:\u0000\u0000\u1197"+
57077 		"\u119c\u0003\u027c\u013e\u0000\u1198\u1199\u0005%\u0000\u0000\u1199\u119b"+
57078 		"\u0003\u027c\u013e\u0000\u119a\u1198\u0001\u0000\u0000\u0000\u119b\u119e"+
57079 		"\u0001\u0000\u0000\u0000\u119c\u119a\u0001\u0000\u0000\u0000\u119c\u119d"+
57080 		"\u0001\u0000\u0000\u0000\u119d\u11a1\u0001\u0000\u0000\u0000\u119e\u119c"+
57081 		"\u0001\u0000\u0000\u0000\u119f\u11a0\u0005M\u0000\u0000\u11a0\u11a2\u0003"+
57082 		"\u02a4\u0152\u0000\u11a1\u119f\u0001\u0000\u0000\u0000\u11a1\u11a2\u0001"+
57083 		"\u0000\u0000\u0000\u11a2\u11c6\u0001\u0000\u0000\u0000\u11a3\u11a4\u0005"+
57084 		"\u0239\u0000\u0000\u11a4\u11a5\u0005\u001f\u0000\u0000\u11a5\u11aa\u0003"+
57085 		"\u0278\u013c\u0000\u11a6\u11a7\u0005%\u0000\u0000\u11a7\u11a9\u0003\u0278"+
57086 		"\u013c\u0000\u11a8\u11a6\u0001\u0000\u0000\u0000\u11a9\u11ac\u0001\u0000"+
57087 		"\u0000\u0000\u11aa\u11a8\u0001\u0000\u0000\u0000\u11aa\u11ab\u0001\u0000"+
57088 		"\u0000\u0000\u11ab\u11ad\u0001\u0000\u0000\u0000\u11ac\u11aa\u0001\u0000"+
57089 		"\u0000\u0000\u11ad\u11ae\u0005 \u0000\u0000\u11ae\u11c6\u0001\u0000\u0000"+
57090 		"\u0000\u11af\u11b0\u0005\u0239\u0000\u0000\u11b0\u11b1\u0005\u028c\u0000"+
57091 		"\u0000\u11b1\u11b2\u0005\u0018\u0000\u0000\u11b2\u11c6\u0005\u02d3\u0000"+
57092 		"\u0000\u11b3\u11b4\u00059\u0000\u0000\u11b4\u11b5\u0005\u028e\u0000\u0000"+
57093 		"\u11b5\u11b6\u0005a\u0000\u0000\u11b6\u11b7\u0005\u0154\u0000\u0000\u11b7"+
57094 		"\u11c1\u0003\u00e4r\u0000\u11b8\u11b9\u0005M\u0000\u0000\u11b9\u11be\u0003"+
57095 		"\u0276\u013b\u0000\u11ba\u11bb\u0005%\u0000\u0000\u11bb\u11bd\u0003\u0276"+
57096 		"\u013b\u0000\u11bc\u11ba\u0001\u0000\u0000\u0000\u11bd\u11c0\u0001\u0000"+
57097 		"\u0000\u0000\u11be\u11bc\u0001\u0000\u0000\u0000\u11be\u11bf\u0001\u0000"+
57098 		"\u0000\u0000\u11bf\u11c2\u0001\u0000\u0000\u0000\u11c0\u11be\u0001\u0000"+
57099 		"\u0000\u0000\u11c1\u11b8\u0001\u0000\u0000\u0000\u11c1\u11c2\u0001\u0000"+
57100 		"\u0000\u0000\u11c2\u11c6\u0001\u0000\u0000\u0000\u11c3\u11c6\u0005\u028f"+
57101 		"\u0000\u0000\u11c4\u11c6\u0005\u028d\u0000\u0000\u11c5\u118f\u0001\u0000"+
57102 		"\u0000\u0000\u11c5\u1193\u0001\u0000\u0000\u0000\u11c5\u1195\u0001\u0000"+
57103 		"\u0000\u0000\u11c5\u1196\u0001\u0000\u0000\u0000\u11c5\u11a3\u0001\u0000"+
57104 		"\u0000\u0000\u11c5\u11af\u0001\u0000\u0000\u0000\u11c5\u11b3\u0001\u0000"+
57105 		"\u0000\u0000\u11c5\u11c3\u0001\u0000\u0000\u0000\u11c5\u11c4\u0001\u0000"+
57106 		"\u0000\u0000\u11c6\u0275\u0001\u0000\u0000\u0000\u11c7\u11c8\u0005\u0288"+
57107 		"\u0000\u0000\u11c8\u11c9\u0005\u0018\u0000\u0000\u11c9\u11d4\u0007;\u0000"+
57108 		"\u0000\u11ca\u11cb\u0005\u0286\u0000\u0000\u11cb\u11d1\u0005\u0018\u0000"+
57109 		"\u0000\u11cc\u11d2\u0003\u027a\u013d\u0000\u11cd\u11ce\u0005\u0287\u0000"+
57110 		"\u0000\u11ce\u11cf\u0005\u0018\u0000\u0000\u11cf\u11d2\u00032\u0019\u0000"+
57111 		"\u11d0\u11d2\u0007<\u0000\u0000\u11d1\u11cc\u0001\u0000\u0000\u0000\u11d1"+
57112 		"\u11cd\u0001\u0000\u0000\u0000\u11d1\u11d0\u0001\u0000\u0000\u0000\u11d2"+
57113 		"\u11d4\u0001\u0000\u0000\u0000\u11d3\u11c7\u0001\u0000\u0000\u0000\u11d3"+
57114 		"\u11ca\u0001\u0000\u0000\u0000\u11d4\u0277\u0001\u0000\u0000\u0000\u11d5"+
57115 		"\u11d6\u0005\u01fa\u0000\u0000\u11d6\u11d7\u0005\u0018\u0000\u0000\u11d7"+
57116 		"\u11d8\u0005\u02d4\u0000\u0000\u11d8\u11e3\u0007=\u0000\u0000\u11d9\u11da"+
57117 		"\u0005\u0279\u0000\u0000\u11da\u11db\u0005\u0018\u0000\u0000\u11db\u11e3"+
57118 		"\u0005\u02d3\u0000\u0000\u11dc\u11dd\u0005\u0286\u0000\u0000\u11dd\u11e0"+
57119 		"\u0005\u0018\u0000\u0000\u11de\u11e1\u0005\u02d3\u0000\u0000\u11df\u11e1"+
57120 		"\u0003\u027a\u013d\u0000\u11e0\u11de\u0001\u0000\u0000\u0000\u11e0\u11df"+
57121 		"\u0001\u0000\u0000\u0000\u11e1\u11e3\u0001\u0000\u0000\u0000\u11e2\u11d5"+
57122 		"\u0001\u0000\u0000\u0000\u11e2\u11d9\u0001\u0000\u0000\u0000\u11e2\u11dc"+
57123 		"\u0001\u0000\u0000\u0000\u11e3\u0279\u0001\u0000\u0000\u0000\u11e4\u11ed"+
57124 		"\u0005\u02d3\u0000\u0000\u11e5\u11e6\u0005\u0285\u0000\u0000\u11e6\u11e7"+
57125 		"\u0005\u001f\u0000\u0000\u11e7\u11e8\u0003\u00e4r\u0000\u11e8\u11e9\u0005"+
57126 		"\u0018\u0000\u0000\u11e9\u11ea\u0005\u02d3\u0000\u0000\u11ea\u11eb\u0005"+
57127 		" \u0000\u0000\u11eb\u11ed\u0001\u0000\u0000\u0000\u11ec\u11e4\u0001\u0000"+
57128 		"\u0000\u0000\u11ec\u11e5\u0001\u0000\u0000\u0000\u11ed\u027b\u0001\u0000"+
57129 		"\u0000\u0000\u11ee\u121a\u0003\u0286\u0143\u0000\u11ef\u121a\u0003\u0288"+
57130 		"\u0144\u0000\u11f0\u121a\u0003\u028a\u0145\u0000\u11f1\u121a\u0003\u028c"+
57131 		"\u0146\u0000\u11f2\u11f3\u0005\u01f6\u0000\u0000\u11f3\u11f4\u0005\u0018"+
57132 		"\u0000\u0000\u11f4\u121a\u00071\u0000\u0000\u11f5\u121a\u0003\u0290\u0148"+
57133 		"\u0000\u11f6\u11f7\u0005\u0284\u0000\u0000\u11f7\u121a\u0007\u0000\u0000"+
57134 		"\u0000\u11f8\u11f9\u0005\u0175\u0000\u0000\u11f9\u121a\u0007>\u0000\u0000"+
57135 		"\u11fa\u121a\u0007?\u0000\u0000\u11fb\u121a\u0007@\u0000\u0000\u11fc\u121a"+
57136 		"\u0007A\u0000\u0000\u11fd\u11fe\u0005\u0299\u0000\u0000\u11fe\u11ff\u0005"+
57137 		"\u0018\u0000\u0000\u11ff\u121a\u0007B\u0000\u0000\u1200\u121a\u0003\u0292"+
57138 		"\u0149\u0000\u1201\u1202\u0005\u011e\u0000\u0000\u1202\u1203\u0005\u001f"+
57139 		"\u0000\u0000\u1203\u1204\u0003\u020a\u0105\u0000\u1204\u1205\u0005 \u0000"+
57140 		"\u0000\u1205\u121a\u0001\u0000\u0000\u0000\u1206\u1207\u00053\u0000\u0000"+
57141 		"\u1207\u1208\u0005\u00cc\u0000\u0000\u1208\u1209\u0005:\u0000\u0000\u1209"+
57142 		"\u121a\u0005\u027d\u0000\u0000\u120a\u120b\u0005\u027a\u0000\u0000\u120b"+
57143 		"\u121a\u0007\u0000\u0000\u0000\u120c\u120d\u0005\u01ee\u0000\u0000\u120d"+
57144 		"\u121a\u0007C\u0000\u0000\u120e\u121a\u0003\u0294\u014a\u0000\u120f\u121a"+
57145 		"\u0003\u029a\u014d\u0000\u1210\u121a\u0003\u02a0\u0150\u0000\u1211\u121a"+
57146 		"\u0003\u029e\u014f\u0000\u1212\u121a\u0003\u029c\u014e\u0000\u1213\u121a"+
57147 		"\u0003\u02a2\u0151\u0000\u1214\u121a\u0003\u02a4\u0152\u0000\u1215\u1216"+
57148 		"\u0005\u0278\u0000\u0000\u1216\u121a\u0007\u0000\u0000\u0000\u1217\u1218"+
57149 		"\u0005\u0277\u0000\u0000\u1218\u121a\u0007\u0000\u0000\u0000\u1219\u11ee"+
57150 		"\u0001\u0000\u0000\u0000\u1219\u11ef\u0001\u0000\u0000\u0000\u1219\u11f0"+
57151 		"\u0001\u0000\u0000\u0000\u1219\u11f1\u0001\u0000\u0000\u0000\u1219\u11f2"+
57152 		"\u0001\u0000\u0000\u0000\u1219\u11f5\u0001\u0000\u0000\u0000\u1219\u11f6"+
57153 		"\u0001\u0000\u0000\u0000\u1219\u11f8\u0001\u0000\u0000\u0000\u1219\u11fa"+
57154 		"\u0001\u0000\u0000\u0000\u1219\u11fb\u0001\u0000\u0000\u0000\u1219\u11fc"+
57155 		"\u0001\u0000\u0000\u0000\u1219\u11fd\u0001\u0000\u0000\u0000\u1219\u1200"+
57156 		"\u0001\u0000\u0000\u0000\u1219\u1201\u0001\u0000\u0000\u0000\u1219\u1206"+
57157 		"\u0001\u0000\u0000\u0000\u1219\u120a\u0001\u0000\u0000\u0000\u1219\u120c"+
57158 		"\u0001\u0000\u0000\u0000\u1219\u120e\u0001\u0000\u0000\u0000\u1219\u120f"+
57159 		"\u0001\u0000\u0000\u0000\u1219\u1210\u0001\u0000\u0000\u0000\u1219\u1211"+
57160 		"\u0001\u0000\u0000\u0000\u1219\u1212\u0001\u0000\u0000\u0000\u1219\u1213"+
57161 		"\u0001\u0000\u0000\u0000\u1219\u1214\u0001\u0000\u0000\u0000\u1219\u1215"+
57162 		"\u0001\u0000\u0000\u0000\u1219\u1217\u0001\u0000\u0000\u0000\u121a\u027d"+
57163 		"\u0001\u0000\u0000\u0000\u121b\u1220\u0003\u0284\u0142\u0000\u121c\u1220"+
57164 		"\u0003\u020c\u0106\u0000\u121d\u1220\u0003\u0280\u0140\u0000\u121e\u1220"+
57165 		"\u0003\u0282\u0141\u0000\u121f\u121b\u0001\u0000\u0000\u0000\u121f\u121c"+
57166 		"\u0001\u0000\u0000\u0000\u121f\u121d\u0001\u0000\u0000\u0000\u121f\u121e"+
57167 		"\u0001\u0000\u0000\u0000\u1220\u027f\u0001\u0000\u0000\u0000\u1221\u1222"+
57168 		"\u00059\u0000\u0000\u1222\u1223\u0005\u0203\u0000\u0000\u1223\u1228\u0003"+
57169 		"\u00e4r\u0000\u1224\u1225\u0005\u0201\u0000\u0000\u1225\u1229\u0005\u011e"+
57170 		"\u0000\u0000\u1226\u1227\u0005\u0201\u0000\u0000\u1227\u1229\u0005\u0202"+
57171 		"\u0000\u0000\u1228\u1224\u0001\u0000\u0000\u0000\u1228\u1226\u0001\u0000"+
57172 		"\u0000\u0000\u1228\u1229\u0001\u0000\u0000\u0000\u1229\u1238\u0001\u0000"+
57173 		"\u0000\u0000\u122a\u122b\u0005\u0234\u0000\u0000\u122b\u122c\u0005\u0203"+
57174 		"\u0000\u0000\u122c\u1238\u0003\u00e4r\u0000\u122d\u122e\u0005\u0239\u0000"+
57175 		"\u0000\u122e\u122f\u0005\u0203\u0000\u0000\u122f\u1230\u0003\u00e4r\u0000"+
57176 		"\u1230\u1231\u0003\u0282\u0141\u0000\u1231\u1238\u0001\u0000\u0000\u0000"+
57177 		"\u1232\u1238\u0005\u009a\u0000\u0000\u1233\u1234\u0005\u00aa\u0000\u0000"+
57178 		"\u1234\u1235\u0005\u0018\u0000\u0000\u1235\u1238\u0003\u00e4r\u0000\u1236"+
57179 		"\u1238\u0007D\u0000\u0000\u1237\u1221\u0001\u0000\u0000\u0000\u1237\u122a"+
57180 		"\u0001\u0000\u0000\u0000\u1237\u122d\u0001\u0000\u0000\u0000\u1237\u1232"+
57181 		"\u0001\u0000\u0000\u0000\u1237\u1233\u0001\u0000\u0000\u0000\u1237\u1236"+
57182 		"\u0001\u0000\u0000\u0000\u1238\u0281\u0001\u0000\u0000\u0000\u1239\u123c"+
57183 		"\u0007E\u0000\u0000\u123a\u123c\u0007@\u0000\u0000\u123b\u1239\u0001\u0000"+
57184 		"\u0000\u0000\u123b\u123a\u0001\u0000\u0000\u0000\u123c\u0283\u0001\u0000"+
57185 		"\u0000\u0000\u123d\u123e\u00059\u0000\u0000\u123e\u123f\u0005\u0179\u0000"+
57186 		"\u0000\u123f\u1244\u0003\u020c\u0106\u0000\u1240\u1241\u0005%\u0000\u0000"+
57187 		"\u1241\u1243\u0003\u020c\u0106\u0000\u1242\u1240\u0001\u0000\u0000\u0000"+
57188 		"\u1243\u1246\u0001\u0000\u0000\u0000\u1244\u1242\u0001\u0000\u0000\u0000"+
57189 		"\u1244\u1245\u0001\u0000\u0000\u0000\u1245\u124a\u0001\u0000\u0000\u0000"+
57190 		"\u1246\u1244\u0001\u0000\u0000\u0000\u1247\u1248\u0005g\u0000\u0000\u1248"+
57191 		"\u1249\u0005\u0203\u0000\u0000\u1249\u124b\u0003\u00e4r\u0000\u124a\u1247"+
57192 		"\u0001\u0000\u0000\u0000\u124a\u124b\u0001\u0000\u0000\u0000\u124b\u125e"+
57193 		"\u0001\u0000\u0000\u0000\u124c\u124d\u00059\u0000\u0000\u124d\u124e\u0005"+
57194 		"\u018d\u0000\u0000\u124e\u124f\u0005\u0179\u0000\u0000\u124f\u1254\u0003"+
57195 		"\u020c\u0106\u0000\u1250\u1251\u0005%\u0000\u0000\u1251\u1253\u0003\u020c"+
57196 		"\u0106\u0000\u1252\u1250\u0001\u0000\u0000\u0000\u1253\u1256\u0001\u0000"+
57197 		"\u0000\u0000\u1254\u1252\u0001\u0000\u0000\u0000\u1254\u1255\u0001\u0000"+
57198 		"\u0000\u0000\u1255\u125e\u0001\u0000\u0000\u0000\u1256\u1254\u0001\u0000"+
57199 		"\u0000\u0000\u1257\u1258\u0005\u0234\u0000\u0000\u1258\u1259\u0005\u0179"+
57200 		"\u0000\u0000\u1259\u125e\u0005\u02d3\u0000\u0000\u125a\u125b\u0005\u0239"+
57201 		"\u0000\u0000\u125b\u125c\u0005\u0179\u0000\u0000\u125c\u125e\u0003\u020c"+
57202 		"\u0106\u0000\u125d\u123d\u0001\u0000\u0000\u0000\u125d\u124c\u0001\u0000"+
57203 		"\u0000\u0000\u125d\u1257\u0001\u0000\u0000\u0000\u125d\u125a\u0001\u0000"+
57204 		"\u0000\u0000\u125e\u0285\u0001\u0000\u0000\u0000\u125f\u1260\u0005\u023a"+
57205 		"\u0000\u0000\u1260\u1261\u0005\u0018\u0000\u0000\u1261\u1268\u0007\u0000"+
57206 		"\u0000\u0000\u1262\u1263\u0005\u001f\u0000\u0000\u1263\u1264\u0005\u023b"+
57207 		"\u0000\u0000\u1264\u1265\u0005\u0018\u0000\u0000\u1265\u1266\u0003\u00e4"+
57208 		"r\u0000\u1266\u1267\u0005 \u0000\u0000\u1267\u1269\u0001\u0000\u0000\u0000"+
57209 		"\u1268\u1262\u0001\u0000\u0000\u0000\u1268\u1269\u0001\u0000\u0000\u0000"+
57210 		"\u1269\u0287\u0001\u0000\u0000\u0000\u126a\u126b\u0005\u0276\u0000\u0000"+
57211 		"\u126b\u127f\u0007\u0000\u0000\u0000\u126c\u1276\u0005\u0274\u0000\u0000"+
57212 		"\u126d\u1277\u0005b\u0000\u0000\u126e\u1274\u0005a\u0000\u0000\u126f\u1270"+
57213 		"\u0005\u001f\u0000\u0000\u1270\u1271\u0005\u0275\u0000\u0000\u1271\u1272"+
57214 		"\u0005\u0018\u0000\u0000\u1272\u1273\u0007\u0000\u0000\u0000\u1273\u1275"+
57215 		"\u0005 \u0000\u0000\u1274\u126f\u0001\u0000\u0000\u0000\u1274\u1275\u0001"+
57216 		"\u0000\u0000\u0000\u1275\u1277\u0001\u0000\u0000\u0000\u1276\u126d\u0001"+
57217 		"\u0000\u0000\u0000\u1276\u126e\u0001\u0000\u0000\u0000\u1277\u127f\u0001"+
57218 		"\u0000\u0000\u0000\u1278\u1279\u0005\u0273\u0000\u0000\u1279\u127f\u0007"+
57219 		"\u0000\u0000\u0000\u127a\u127b\u0005\u0272\u0000\u0000\u127b\u127f\u0007"+
57220 		"\u0000\u0000\u0000\u127c\u127d\u0005\u0271\u0000\u0000\u127d\u127f\u0007"+
57221 		"\u0000\u0000\u0000\u127e\u126a\u0001\u0000\u0000\u0000\u127e\u126c\u0001"+
57222 		"\u0000\u0000\u0000\u127e\u1278\u0001\u0000\u0000\u0000\u127e\u127a\u0001"+
57223 		"\u0000\u0000\u0000\u127e\u127c\u0001\u0000\u0000\u0000\u127f\u0289\u0001"+
57224 		"\u0000\u0000\u0000\u1280\u1281\u0005\u026f\u0000\u0000\u1281\u1282\u0005"+
57225 		"\u001f\u0000\u0000\u1282\u1283\u0005\u0270\u0000\u0000\u1283\u1284\u0005"+
57226 		"\u0018\u0000\u0000\u1284\u1285\u0007\u0000\u0000\u0000\u1285\u1286\u0005"+
57227 		" \u0000\u0000\u1286\u028b\u0001\u0000\u0000\u0000\u1287\u129b\u0005\u026e"+
57228 		"\u0000\u0000\u1288\u1289\u0005\u0018\u0000\u0000\u1289\u129c\u0005b\u0000"+
57229 		"\u0000\u128a\u128b\u0005\u0018\u0000\u0000\u128b\u128d\u0005a\u0000\u0000"+
57230 		"\u128c\u128a\u0001\u0000\u0000\u0000\u128c\u128d\u0001\u0000\u0000\u0000"+
57231 		"\u128d\u1299\u0001\u0000\u0000\u0000\u128e\u128f\u0005\u001f\u0000\u0000"+
57232 		"\u128f\u1294\u0003\u028e\u0147\u0000\u1290\u1291\u0005%\u0000\u0000\u1291"+
57233 		"\u1293\u0003\u028e\u0147\u0000\u1292\u1290\u0001\u0000\u0000\u0000\u1293"+
57234 		"\u1296\u0001\u0000\u0000\u0000\u1294\u1292\u0001\u0000\u0000\u0000\u1294"+
57235 		"\u1295\u0001\u0000\u0000\u0000\u1295\u1297\u0001\u0000\u0000\u0000\u1296"+
57236 		"\u1294\u0001\u0000\u0000\u0000\u1297\u1298\u0005 \u0000\u0000\u1298\u129a"+
57237 		"\u0001\u0000\u0000\u0000\u1299\u128e\u0001\u0000\u0000\u0000\u1299\u129a"+
57238 		"\u0001\u0000\u0000\u0000\u129a\u129c\u0001\u0000\u0000\u0000\u129b\u1288"+
57239 		"\u0001\u0000\u0000\u0000\u129b\u128c\u0001\u0000\u0000\u0000\u129c\u028d"+
57240 		"\u0001\u0000\u0000\u0000\u129d\u129e\u0005\u026d\u0000\u0000\u129e\u129f"+
57241 		"\u0005\u0018\u0000\u0000\u129f\u12a5\u0007\u0000\u0000\u0000\u12a0\u12a1"+
57242 		"\u0005\u026c\u0000\u0000\u12a1\u12a2\u0005\u0018\u0000\u0000\u12a2\u12a3"+
57243 		"\u0005\u02d4\u0000\u0000\u12a3\u12a5\u0007F\u0000\u0000\u12a4\u129d\u0001"+
57244 		"\u0000\u0000\u0000\u12a4\u12a0\u0001\u0000\u0000\u0000\u12a5\u028f\u0001"+
57245 		"\u0000\u0000\u0000\u12a6\u12a7\u0005\u026a\u0000\u0000\u12a7\u12ab\u0007"+
57246 		"\u0000\u0000\u0000\u12a8\u12a9\u0005\u0268\u0000\u0000\u12a9\u12ab\u0007"+
57247 		"G\u0000\u0000\u12aa\u12a6\u0001\u0000\u0000\u0000\u12aa\u12a8\u0001\u0000"+
57248 		"\u0000\u0000\u12ab\u0291\u0001\u0000\u0000\u0000\u12ac\u12ad\u0005\u0205"+
57249 		"\u0000\u0000\u12ad\u12c0\u0007\u0000\u0000\u0000\u12ae\u12af\u0005\u0206"+
57250 		"\u0000\u0000\u12af\u12c0\u0007\u0000\u0000\u0000\u12b0\u12b1\u0005\u0290"+
57251 		"\u0000\u0000\u12b1\u12b2\u0005\u0018\u0000\u0000\u12b2\u12c0\u0005\u02d3"+
57252 		"\u0000\u0000\u12b3\u12b4\u0005\u0291\u0000\u0000\u12b4\u12b5\u0005\u0018"+
57253 		"\u0000\u0000\u12b5\u12c0\u0005\u02d3\u0000\u0000\u12b6\u12b7\u0005\u0293"+
57254 		"\u0000\u0000\u12b7\u12b8\u0005\u0018\u0000\u0000\u12b8\u12c0\u0007\u0000"+
57255 		"\u0000\u0000\u12b9\u12ba\u0005\u0294\u0000\u0000\u12ba\u12bb\u0005\u0018"+
57256 		"\u0000\u0000\u12bb\u12c0\u0007\u0000\u0000\u0000\u12bc\u12bd\u0005\u0295"+
57257 		"\u0000\u0000\u12bd\u12be\u0005\u0018\u0000\u0000\u12be\u12c0\u0005\u02d4"+
57258 		"\u0000\u0000\u12bf\u12ac\u0001\u0000\u0000\u0000\u12bf\u12ae\u0001\u0000"+
57259 		"\u0000\u0000\u12bf\u12b0\u0001\u0000\u0000\u0000\u12bf\u12b3\u0001\u0000"+
57260 		"\u0000\u0000\u12bf\u12b6\u0001\u0000\u0000\u0000\u12bf\u12b9\u0001\u0000"+
57261 		"\u0000\u0000\u12bf\u12bc\u0001\u0000\u0000\u0000\u12c0\u0293\u0001\u0000"+
57262 		"\u0000\u0000\u12c1\u12d5\u0005\u0267\u0000\u0000\u12c2\u12c3\u0005\u0018"+
57263 		"\u0000\u0000\u12c3\u12d6\u0005b\u0000\u0000\u12c4\u12c5\u0005\u0018\u0000"+
57264 		"\u0000\u12c5\u12c7\u0005a\u0000\u0000\u12c6\u12c4\u0001\u0000\u0000\u0000"+
57265 		"\u12c6\u12c7\u0001\u0000\u0000\u0000\u12c7\u12d3\u0001\u0000\u0000\u0000"+
57266 		"\u12c8\u12c9\u0005\u001f\u0000\u0000\u12c9\u12ce\u0003\u0296\u014b\u0000"+
57267 		"\u12ca\u12cb\u0005%\u0000\u0000\u12cb\u12cd\u0003\u0296\u014b\u0000\u12cc"+
57268 		"\u12ca\u0001\u0000\u0000\u0000\u12cd\u12d0\u0001\u0000\u0000\u0000\u12ce"+
57269 		"\u12cc\u0001\u0000\u0000\u0000\u12ce\u12cf\u0001\u0000\u0000\u0000\u12cf"+
57270 		"\u12d1\u0001\u0000\u0000\u0000\u12d0\u12ce\u0001\u0000\u0000\u0000\u12d1"+
57271 		"\u12d2\u0005 \u0000\u0000\u12d2\u12d4\u0001\u0000\u0000\u0000\u12d3\u12c8"+
57272 		"\u0001\u0000\u0000\u0000\u12d3\u12d4\u0001\u0000\u0000\u0000\u12d4\u12d6"+
57273 		"\u0001\u0000\u0000\u0000\u12d5\u12c2\u0001\u0000\u0000\u0000\u12d5\u12c6"+
57274 		"\u0001\u0000\u0000\u0000\u12d6\u0295\u0001\u0000\u0000\u0000\u12d7\u12d8"+
57275 		"\u0005\u0266\u0000\u0000\u12d8\u12d9\u0005\u0018\u0000\u0000\u12d9\u1304"+
57276 		"\u0007@\u0000\u0000\u12da\u12db\u0005\u0263\u0000\u0000\u12db\u12dc\u0005"+
57277 		"\u0018\u0000\u0000\u12dc\u12dd\u0005\u001f\u0000\u0000\u12dd\u12de\u0005"+
57278 		"\u0265\u0000\u0000\u12de\u12df\u0005\u0018\u0000\u0000\u12df\u12e0\u0005"+
57279 		"\u02d4\u0000\u0000\u12e0\u1304\u0005 \u0000\u0000\u12e1\u12e2\u0005\u0262"+
57280 		"\u0000\u0000\u12e2\u12e3\u0005\u0018\u0000\u0000\u12e3\u1304\u0005\u02d4"+
57281 		"\u0000\u0000\u12e4\u12e5\u0005\u0261\u0000\u0000\u12e5\u12e6\u0005\u0018"+
57282 		"\u0000\u0000\u12e6\u1304\u0005\u02d4\u0000\u0000\u12e7\u12e8\u0005\u0260"+
57283 		"\u0000\u0000\u12e8\u12e9\u0005\u0018\u0000\u0000\u12e9\u1304\u0005\u02d4"+
57284 		"\u0000\u0000\u12ea\u12eb\u0005\u025f\u0000\u0000\u12eb\u12ec\u0005\u0018"+
57285 		"\u0000\u0000\u12ec\u1304\u0007H\u0000\u0000\u12ed\u12ee\u0005\u025e\u0000"+
57286 		"\u0000\u12ee\u12ef\u0005\u0018\u0000\u0000\u12ef\u1304\u0007I\u0000\u0000"+
57287 		"\u12f0\u12f1\u0005\u025d\u0000\u0000\u12f1\u12f2\u0005\u0018\u0000\u0000"+
57288 		"\u12f2\u1304\u0005\u02d4\u0000\u0000\u12f3\u12f4\u0005\u025c\u0000\u0000"+
57289 		"\u12f4\u12f5\u0005\u0018\u0000\u0000\u12f5\u1304\u0007\u0000\u0000\u0000"+
57290 		"\u12f6\u12f7\u0005\u025b\u0000\u0000\u12f7\u12f8\u0005\u0018\u0000\u0000"+
57291 		"\u12f8\u12f9\u0005\u001f\u0000\u0000\u12f9\u12fe\u0003\u0298\u014c\u0000"+
57292 		"\u12fa\u12fb\u0005%\u0000\u0000\u12fb\u12fd\u0003\u0298\u014c\u0000\u12fc"+
57293 		"\u12fa\u0001\u0000\u0000\u0000\u12fd\u1300\u0001\u0000\u0000\u0000\u12fe"+
57294 		"\u12fc\u0001\u0000\u0000\u0000\u12fe\u12ff\u0001\u0000\u0000\u0000\u12ff"+
57295 		"\u1301\u0001\u0000\u0000\u0000\u1300\u12fe\u0001\u0000\u0000\u0000\u1301"+
57296 		"\u1302\u0005 \u0000\u0000\u1302\u1304\u0001\u0000\u0000\u0000\u1303\u12d7"+
57297 		"\u0001\u0000\u0000\u0000\u1303\u12da\u0001\u0000\u0000\u0000\u1303\u12e1"+
57298 		"\u0001\u0000\u0000\u0000\u1303\u12e4\u0001\u0000\u0000\u0000\u1303\u12e7"+
57299 		"\u0001\u0000\u0000\u0000\u1303\u12ea\u0001\u0000\u0000\u0000\u1303\u12ed"+
57300 		"\u0001\u0000\u0000\u0000\u1303\u12f0\u0001\u0000\u0000\u0000\u1303\u12f3"+
57301 		"\u0001\u0000\u0000\u0000\u1303\u12f6\u0001\u0000\u0000\u0000\u1304\u0297"+
57302 		"\u0001\u0000\u0000\u0000\u1305\u1306\u0005\u0259\u0000\u0000\u1306\u1307"+
57303 		"\u0005\u0018\u0000\u0000\u1307\u1308\u0005\u02d4\u0000\u0000\u1308\u1313"+
57304 		"\u0007J\u0000\u0000\u1309\u130a\u0005\u025a\u0000\u0000\u130a\u130b\u0005"+
57305 		"\u0018\u0000\u0000\u130b\u1313\u0005\u02d4\u0000\u0000\u130c\u130d\u0005"+
57306 		"\u0258\u0000\u0000\u130d\u130e\u0005\u0018\u0000\u0000\u130e\u1313\u0005"+
57307 		"\u02d4\u0000\u0000\u130f\u1310\u0005\u0257\u0000\u0000\u1310\u1311\u0005"+
57308 		"\u0018\u0000\u0000\u1311\u1313\u0005\u02d4\u0000\u0000\u1312\u1305\u0001"+
57309 		"\u0000\u0000\u0000\u1312\u1309\u0001\u0000\u0000\u0000\u1312\u130c\u0001"+
57310 		"\u0000\u0000\u0000\u1312\u130f\u0001\u0000\u0000\u0000\u1313\u0299\u0001"+
57311 		"\u0000\u0000\u0000\u1314\u1315\u0005\u0256\u0000\u0000\u1315\u131b\u0007"+
57312 		"K\u0000\u0000\u1316\u1317\u0005\u0254\u0000\u0000\u1317\u131b\u0007\u0000"+
57313 		"\u0000\u0000\u1318\u1319\u0005\u0252\u0000\u0000\u1319\u131b\u0007L\u0000"+
57314 		"\u0000\u131a\u1314\u0001\u0000\u0000\u0000\u131a\u1316\u0001\u0000\u0000"+
57315 		"\u0000\u131a\u1318\u0001\u0000\u0000\u0000\u131b\u029b\u0001\u0000\u0000"+
57316 		"\u0000\u131c\u131d\u0005\u0251\u0000\u0000\u131d\u1332\u0007\u0000\u0000"+
57317 		"\u0000\u131e\u131f\u0005\u0250\u0000\u0000\u131f\u1332\u0007\u0000\u0000"+
57318 		"\u0000\u1320\u1321\u0005\u024f\u0000\u0000\u1321\u1332\u0007\u0000\u0000"+
57319 		"\u0000\u1322\u1323\u0005\u024e\u0000\u0000\u1323\u1332\u0007\u0000\u0000"+
57320 		"\u0000\u1324\u1325\u0005\u024d\u0000\u0000\u1325\u1332\u0007\u0000\u0000"+
57321 		"\u0000\u1326\u1327\u0005\u024c\u0000\u0000\u1327\u1328\u0005\u0018\u0000"+
57322 		"\u0000\u1328\u1332\u0005\u02d4\u0000\u0000\u1329\u132a\u0005\u024b\u0000"+
57323 		"\u0000\u132a\u1332\u0007\u0000\u0000\u0000\u132b\u132c\u0005\u024a\u0000"+
57324 		"\u0000\u132c\u1332\u0007\u0000\u0000\u0000\u132d\u132e\u0005\u0249\u0000"+
57325 		"\u0000\u132e\u1332\u0007\u0000\u0000\u0000\u132f\u1330\u0005\u0248\u0000"+
57326 		"\u0000\u1330\u1332\u0007\u0000\u0000\u0000\u1331\u131c\u0001\u0000\u0000"+
57327 		"\u0000\u1331\u131e\u0001\u0000\u0000\u0000\u1331\u1320\u0001\u0000\u0000"+
57328 		"\u0000\u1331\u1322\u0001\u0000\u0000\u0000\u1331\u1324\u0001\u0000\u0000"+
57329 		"\u0000\u1331\u1326\u0001\u0000\u0000\u0000\u1331\u1329\u0001\u0000\u0000"+
57330 		"\u0000\u1331\u132b\u0001\u0000\u0000\u0000\u1331\u132d\u0001\u0000\u0000"+
57331 		"\u0000\u1331\u132f\u0001\u0000\u0000\u0000\u1332\u029d\u0001\u0000\u0000"+
57332 		"\u0000\u1333\u1334\u0005\u0247\u0000\u0000\u1334\u133b\u0007\u0000\u0000"+
57333 		"\u0000\u1335\u1336\u0005\u0246\u0000\u0000\u1336\u133b\u0007\u0000\u0000"+
57334 		"\u0000\u1337\u1338\u0005\u0245\u0000\u0000\u1338\u1339\u0005\u0018\u0000"+
57335 		"\u0000\u1339\u133b\u0007\u0000\u0000\u0000\u133a\u1333\u0001\u0000\u0000"+
57336 		"\u0000\u133a\u1335\u0001\u0000\u0000\u0000\u133a\u1337\u0001\u0000\u0000"+
57337 		"\u0000\u133b\u029f\u0001\u0000\u0000\u0000\u133c\u1343\u0005\u0244\u0000"+
57338 		"\u0000\u133d\u1343\u0005\u0243\u0000\u0000\u133e\u1343\u0005\u0242\u0000"+
57339 		"\u0000\u133f\u1343\u0005\u0241\u0000\u0000\u1340\u1341\u0005\u0240\u0000"+
57340 		"\u0000\u1341\u1343\u0007\u0000\u0000\u0000\u1342\u133c\u0001\u0000\u0000"+
57341 		"\u0000\u1342\u133d\u0001\u0000\u0000\u0000\u1342\u133e\u0001\u0000\u0000"+
57342 		"\u0000\u1342\u133f\u0001\u0000\u0000\u0000\u1342\u1340\u0001\u0000\u0000"+
57343 		"\u0000\u1343\u02a1\u0001\u0000\u0000\u0000\u1344\u1345\u0005\u023e\u0000"+
57344 		"\u0000\u1345\u1346\u0005\u0018\u0000\u0000\u1346\u1347\u0005\u02d4\u0000"+
57345 		"\u0000\u1347\u1348\u0007M\u0000\u0000\u1348\u02a3\u0001\u0000\u0000\u0000"+
57346 		"\u1349\u134a\u0005\u007f\u0000\u0000\u134a\u134b\u0005\u0221\u0000\u0000"+
57347 		"\u134b\u134d\u0005\u02d4\u0000\u0000\u134c\u134e\u0005\u023f\u0000\u0000"+
57348 		"\u134d\u134c\u0001\u0000\u0000\u0000\u134d\u134e\u0001\u0000\u0000\u0000"+
57349 		"\u134e\u1353\u0001\u0000\u0000\u0000\u134f\u1350\u0005\u007f\u0000\u0000"+
57350 		"\u1350\u1353\u0005\u023c\u0000\u0000\u1351\u1353\u0005\u023d\u0000\u0000"+
57351 		"\u1352\u1349\u0001\u0000\u0000\u0000\u1352\u134f\u0001\u0000\u0000\u0000"+
57352 		"\u1352\u1351\u0001\u0000\u0000\u0000\u1353\u02a5\u0001\u0000\u0000\u0000"+
57353 		"\u1354\u1355\u0005\u001f\u0000\u0000\u1355\u135a\u0003D\"\u0000\u1356"+
57354 		"\u1357\u0005%\u0000\u0000\u1357\u1359\u0003D\"\u0000\u1358\u1356\u0001"+
57355 		"\u0000\u0000\u0000\u1359\u135c\u0001\u0000\u0000\u0000\u135a\u1358\u0001"+
57356 		"\u0000\u0000\u0000\u135a\u135b\u0001\u0000\u0000\u0000\u135b\u135d\u0001"+
57357 		"\u0000\u0000\u0000\u135c\u135a\u0001\u0000\u0000\u0000\u135d\u135e\u0005"+
57358 		" \u0000\u0000\u135e\u02a7\u0001\u0000\u0000\u0000\u135f\u1360\u0005\u001f"+
57359 		"\u0000\u0000\u1360\u1365\u0003\u02aa\u0155\u0000\u1361\u1362\u0005%\u0000"+
57360 		"\u0000\u1362\u1364\u0003\u02aa\u0155\u0000\u1363\u1361\u0001\u0000\u0000"+
57361 		"\u0000\u1364\u1367\u0001\u0000\u0000\u0000\u1365\u1363\u0001\u0000\u0000"+
57362 		"\u0000\u1365\u1366\u0001\u0000\u0000\u0000\u1366\u1368\u0001\u0000\u0000"+
57363 		"\u0000\u1367\u1365\u0001\u0000\u0000\u0000\u1368\u1369\u0005 \u0000\u0000"+
57364 		"\u1369\u02a9\u0001\u0000\u0000\u0000\u136a\u136b\u00059\u0000\u0000\u136b"+
57365 		"\u136c\u0005\u0174\u0000\u0000\u136c\u1371\u0003D\"\u0000\u136d\u136e"+
57366 		"\u00054\u0000\u0000\u136e\u136f\u0005\u0174\u0000\u0000\u136f\u1371\u0003"+
57367 		"D\"\u0000\u1370\u136a\u0001\u0000\u0000\u0000\u1370\u136d\u0001\u0000"+
57368 		"\u0000\u0000\u1371\u02ab\u0001\u0000\u0000\u0000\u1372\u137a\u00034\u001a"+
57369 		"\u0000\u1373\u1374\u0005\u029a\u0000\u0000\u1374\u137a\u0003\u00e4r\u0000"+
57370 		"\u1375\u1376\u00034\u001a\u0000\u1376\u1377\u0005\u029a\u0000\u0000\u1377"+
57371 		"\u1378\u0003\u00e4r\u0000\u1378\u137a\u0001\u0000\u0000\u0000\u1379\u1372"+
57372 		"\u0001\u0000\u0000\u0000\u1379\u1373\u0001\u0000\u0000\u0000\u1379\u1375"+
57373 		"\u0001\u0000\u0000\u0000\u137a\u02ad\u0001\u0000\u0000\u0000\u137b\u1381"+
57374 		"\u0003\u0102\u0081\u0000\u137c\u1381\u0003\u010e\u0087\u0000\u137d\u1381"+
57375 		"\u0003\u032e\u0197\u0000\u137e\u1381\u0003\u0340\u01a0\u0000\u137f\u1381"+
57376 		"\u0003\u0346\u01a3\u0000\u1380\u137b\u0001\u0000\u0000\u0000\u1380\u137c"+
57377 		"\u0001\u0000\u0000\u0000\u1380\u137d\u0001\u0000\u0000\u0000\u1380\u137e"+
57378 		"\u0001\u0000\u0000\u0000\u1380\u137f\u0001\u0000\u0000\u0000\u1381\u02af"+
57379 		"\u0001\u0000\u0000\u0000\u1382\u1385\u0003\u02b2\u0159\u0000\u1383\u1385"+
57380 		"\u0003\u02b4\u015a\u0000\u1384\u1382\u0001\u0000\u0000\u0000\u1384\u1383"+
57381 		"\u0001\u0000\u0000\u0000\u1385\u02b1\u0001\u0000\u0000\u0000\u1386\u1387"+
57382 		"\u00052\u0000\u0000\u1387\u1388\u0005;\u0000\u0000\u1388\u138a\u0003@"+
57383 		" \u0000\u1389\u138b\u0003P(\u0000\u138a\u1389\u0001\u0000\u0000\u0000"+
57384 		"\u138a\u138b\u0001\u0000\u0000\u0000\u138b\u138c\u0001\u0000\u0000\u0000"+
57385 		"\u138c\u138d\u0003\u02b6\u015b\u0000\u138d\u138e\u0005`\u0000\u0000\u138e"+
57386 		"\u138f\u0003\u02dc\u016e\u0000\u138f\u1390\u0003\u02b8\u015c\u0000\u1390"+
57387 		"\u02b3\u0001\u0000\u0000\u0000\u1391\u1392\u00052\u0000\u0000\u1392\u1393"+
57388 		"\u0005\u0180\u0000\u0000\u1393\u1394\u0005;\u0000\u0000\u1394\u1395\u0003"+
57389 		"@ \u0000\u1395\u1396\u0005\u00d4\u0000\u0000\u1396\u1397\u0005\u001f\u0000"+
57390 		"\u0000\u1397\u1398\u0003\u001c\u000e\u0000\u1398\u139f\u0005 \u0000\u0000"+
57391 		"\u1399\u139a\u0005M\u0000\u0000\u139a\u139b\u0005\u001f\u0000\u0000\u139b"+
57392 		"\u139c\u0005\u029e\u0000\u0000\u139c\u139d\u0005\u0018\u0000\u0000\u139d"+
57393 		"\u139e\u0005\u02d5\u0000\u0000\u139e\u13a0\u0005 \u0000\u0000\u139f\u1399"+
57394 		"\u0001\u0000\u0000\u0000\u139f\u13a0\u0001\u0000\u0000\u0000\u13a0\u13a1"+
57395 		"\u0001\u0000\u0000\u0000\u13a1\u13a2\u0005`\u0000\u0000\u13a2\u13a3\u0003"+
57396 		"\u02dc\u016e\u0000\u13a3\u02b5\u0001\u0000\u0000\u0000\u13a4\u13a5\u0005"+
57397 		"M\u0000\u0000\u13a5\u13a6\u0005\u001f\u0000\u0000\u13a6\u13b0\u0003\u01b6"+
57398 		"\u00db\u0000\u13a7\u13a8\u0005%\u0000\u0000\u13a8\u13ad\u0003\u01aa\u00d5"+
57399 		"\u0000\u13a9\u13aa\u0005%\u0000\u0000\u13aa\u13ac\u0003\u01aa\u00d5\u0000"+
57400 		"\u13ab\u13a9\u0001\u0000\u0000\u0000\u13ac\u13af\u0001\u0000\u0000\u0000"+
57401 		"\u13ad\u13ab\u0001\u0000\u0000\u0000\u13ad\u13ae\u0001\u0000\u0000\u0000"+
57402 		"\u13ae\u13b1\u0001\u0000\u0000\u0000\u13af\u13ad\u0001\u0000\u0000\u0000"+
57403 		"\u13b0\u13a7\u0001\u0000\u0000\u0000\u13b0\u13b1\u0001\u0000\u0000\u0000"+
57404 		"\u13b1\u13b2\u0001\u0000\u0000\u0000\u13b2\u13b3\u0005 \u0000\u0000\u13b3"+
57405 		"\u02b7\u0001\u0000\u0000\u0000\u13b4\u13b5\u0005\u0101\u0000\u0000\u13b5"+
57406 		"\u13b6\u0005\u001f\u0000\u0000\u13b6\u13bb\u0003\u0316\u018b\u0000\u13b7"+
57407 		"\u13b8\u0005%\u0000\u0000\u13b8\u13ba\u0003\u0316\u018b\u0000\u13b9\u13b7"+
57408 		"\u0001\u0000\u0000\u0000\u13ba\u13bd\u0001\u0000\u0000\u0000\u13bb\u13b9"+
57409 		"\u0001\u0000\u0000\u0000\u13bb\u13bc\u0001\u0000\u0000\u0000\u13bc\u13be"+
57410 		"\u0001\u0000\u0000\u0000\u13bd\u13bb\u0001\u0000\u0000\u0000\u13be\u13bf"+
57411 		"\u0005 \u0000\u0000\u13bf\u13c1\u0001\u0000\u0000\u0000\u13c0\u13b4\u0001"+
57412 		"\u0000\u0000\u0000\u13c0\u13c1\u0001\u0000\u0000\u0000\u13c1\u02b9\u0001"+
57413 		"\u0000\u0000\u0000\u13c2\u13c4\u0003\u0306\u0183\u0000\u13c3\u13c2\u0001"+
57414 		"\u0000\u0000\u0000\u13c3\u13c4\u0001\u0000\u0000\u0000\u13c4\u13c5\u0001"+
57415 		"\u0000\u0000\u0000\u13c5\u13c7\u0005/\u0000\u0000\u13c6\u13c8\u0003\u02e8"+
57416 		"\u0174\u0000\u13c7\u13c6\u0001\u0000\u0000\u0000\u13c7\u13c8\u0001\u0000"+
57417 		"\u0000\u0000\u13c8\u13ca\u0001\u0000\u0000\u0000\u13c9\u13cb\u0005K\u0000"+
57418 		"\u0000\u13ca\u13c9\u0001\u0000\u0000\u0000\u13ca\u13cb\u0001\u0000\u0000"+
57419 		"\u0000\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13d1\u0003@ \u0000\u13cd"+
57420 		"\u13cf\u0005`\u0000\u0000\u13ce\u13cd\u0001\u0000\u0000\u0000\u13ce\u13cf"+
57421 		"\u0001\u0000\u0000\u0000\u13cf\u13d0\u0001\u0000\u0000\u0000\u13d0\u13d2"+
57422 		"\u0003\\.\u0000\u13d1\u13ce\u0001\u0000\u0000\u0000\u13d1\u13d2\u0001"+
57423 		"\u0000\u0000\u0000\u13d2\u13d4\u0001\u0000\u0000\u0000\u13d3\u13d5\u0003"+
57424 		"\u02c4\u0162\u0000\u13d4\u13d3\u0001\u0000\u0000\u0000\u13d4\u13d5\u0001"+
57425 		"\u0000\u0000\u0000\u13d5\u13da\u0001\u0000\u0000\u0000\u13d6\u13db\u0003"+
57426 		"\u02bc\u015e\u0000\u13d7\u13db\u0003\u02be\u015f\u0000\u13d8\u13db\u0003"+
57427 		"\u02c0\u0160\u0000\u13d9\u13db\u0003\u02c2\u0161\u0000\u13da\u13d6\u0001"+
57428 		"\u0000\u0000\u0000\u13da\u13d7\u0001\u0000\u0000\u0000\u13da\u13d8\u0001"+
57429 		"\u0000\u0000\u0000\u13da\u13d9\u0001\u0000\u0000\u0000\u13db\u02bb\u0001"+
57430 		"\u0000\u0000\u0000\u13dc\u13de\u0003P(\u0000\u13dd\u13dc\u0001\u0000\u0000"+
57431 		"\u0000\u13dd\u13de\u0001\u0000\u0000\u0000\u13de\u13e0\u0001\u0000\u0000"+
57432 		"\u0000\u13df\u13e1\u0003\u030c\u0186\u0000\u13e0\u13df\u0001\u0000\u0000"+
57433 		"\u0000\u13e0\u13e1\u0001\u0000\u0000\u0000\u13e1\u13e2\u0001\u0000\u0000"+
57434 		"\u0000\u13e2\u13e3\u0005\u009a\u0000\u0000\u13e3\u13e4\u0005L\u0000\u0000"+
57435 		"\u13e4\u02bd\u0001\u0000\u0000\u0000\u13e5\u13e7\u0003P(\u0000\u13e6\u13e5"+
57436 		"\u0001\u0000\u0000\u0000\u13e6\u13e7\u0001\u0000\u0000\u0000\u13e7\u13e9"+
57437 		"\u0001\u0000\u0000\u0000\u13e8\u13ea\u0003\u030c\u0186\u0000\u13e9\u13e8"+
57438 		"\u0001\u0000\u0000\u0000\u13e9\u13ea\u0001\u0000\u0000\u0000\u13ea\u13eb"+
57439 		"\u0001\u0000\u0000\u0000\u13eb\u13ec\u0005L\u0000\u0000\u13ec\u13f1\u0003"+
57440 		"\u02ce\u0167\u0000\u13ed\u13ee\u0005%\u0000\u0000\u13ee\u13f0\u0003\u02ce"+
57441 		"\u0167\u0000\u13ef\u13ed\u0001\u0000\u0000\u0000\u13f0\u13f3\u0001\u0000"+
57442 		"\u0000\u0000\u13f1\u13ef\u0001\u0000\u0000\u0000\u13f1\u13f2\u0001\u0000"+
57443 		"\u0000\u0000\u13f2\u02bf\u0001\u0000\u0000\u0000\u13f3\u13f1\u0001\u0000"+
57444 		"\u0000\u0000\u13f4\u13f6\u0003P(\u0000\u13f5\u13f4\u0001\u0000\u0000\u0000"+
57445 		"\u13f5\u13f6\u0001\u0000\u0000\u0000\u13f6\u13f8\u0001\u0000\u0000\u0000"+
57446 		"\u13f7\u13f9\u0003\u030c\u0186\u0000\u13f8\u13f7\u0001\u0000\u0000\u0000"+
57447 		"\u13f8\u13f9\u0001\u0000\u0000\u0000\u13f9\u13fa\u0001\u0000\u0000\u0000"+
57448 		"\u13fa\u13fb\u0003\u02dc\u016e\u0000\u13fb\u02c1\u0001\u0000\u0000\u0000"+
57449 		"\u13fc\u13fe\u0003P(\u0000\u13fd\u13fc\u0001\u0000\u0000\u0000\u13fd\u13fe"+
57450 		"\u0001\u0000\u0000\u0000\u13fe\u13ff\u0001\u0000\u0000\u0000\u13ff\u1400"+
57451 		"\u0003\u02c6\u0163\u0000\u1400\u02c3\u0001\u0000\u0000\u0000\u1401\u1402"+
57452 		"\u0005M\u0000\u0000\u1402\u1404\u0005\u001f\u0000\u0000\u1403\u1405\u0003"+
57453 		"\u00fa}\u0000\u1404\u1403\u0001\u0000\u0000\u0000\u1405\u1406\u0001\u0000"+
57454 		"\u0000\u0000\u1406\u1404\u0001\u0000\u0000\u0000\u1406\u1407\u0001\u0000"+
57455 		"\u0000\u0000\u1407\u1408\u0001\u0000\u0000\u0000\u1408\u1409\u0005 \u0000"+
57456 		"\u0000\u1409\u02c5\u0001\u0000\u0000\u0000\u140a\u140b\u0007\u001f\u0000"+
57457 		"\u0000\u140b\u1414\u00038\u001c\u0000\u140c\u1411\u0003b1\u0000\u140d"+
57458 		"\u140e\u0005%\u0000\u0000\u140e\u1410\u0003b1\u0000\u140f\u140d\u0001"+
57459 		"\u0000\u0000\u0000\u1410\u1413\u0001\u0000\u0000\u0000\u1411\u140f\u0001"+
57460 		"\u0000\u0000\u0000\u1411\u1412\u0001\u0000\u0000\u0000\u1412\u1415\u0001"+
57461 		"\u0000\u0000\u0000\u1413\u1411\u0001\u0000\u0000\u0000\u1414\u140c\u0001"+
57462 		"\u0000\u0000\u0000\u1414\u1415\u0001\u0000\u0000\u0000\u1415\u02c7\u0001"+
57463 		"\u0000\u0000\u0000\u1416\u1418\u0003\u0306\u0183\u0000\u1417\u1416\u0001"+
57464 		"\u0000\u0000\u0000\u1417\u1418\u0001\u0000\u0000\u0000\u1418\u1419\u0001"+
57465 		"\u0000\u0000\u0000\u1419\u141b\u00050\u0000\u0000\u141a\u141c\u0003\u02e8"+
57466 		"\u0174\u0000\u141b\u141a\u0001\u0000\u0000\u0000\u141b\u141c\u0001\u0000"+
57467 		"\u0000\u0000\u141c\u141d\u0001\u0000\u0000\u0000\u141d\u141f\u0003\u02f4"+
57468 		"\u017a\u0000\u141e\u1420\u0003\u02c4\u0162\u0000\u141f\u141e\u0001\u0000"+
57469 		"\u0000\u0000\u141f\u1420\u0001\u0000\u0000\u0000\u1420\u1421\u0001\u0000"+
57470 		"\u0000\u0000\u1421\u1423\u0003\u02cc\u0166\u0000\u1422\u1424\u0003\u02fe"+
57471 		"\u017f\u0000\u1423\u1422\u0001\u0000\u0000\u0000\u1423\u1424\u0001\u0000"+
57472 		"\u0000\u0000\u1424\u1426\u0001\u0000\u0000\u0000\u1425\u1427\u0003\u02d4"+
57473 		"\u016a\u0000\u1426\u1425\u0001\u0000\u0000\u0000\u1426\u1427\u0001\u0000"+
57474 		"\u0000\u0000\u1427\u02c9\u0001\u0000\u0000\u0000\u1428\u1429\u0003H$\u0000"+
57475 		"\u1429\u142a\u0007N\u0000\u0000\u142a\u142b\u0003\u02d0\u0168\u0000\u142b"+
57476 		"\u02cb\u0001\u0000\u0000\u0000\u142c\u142d\u0005:\u0000\u0000\u142d\u1432"+
57477 		"\u0003\u02ca\u0165\u0000\u142e\u142f\u0005%\u0000\u0000\u142f\u1431\u0003"+
57478 		"\u02ca\u0165\u0000\u1430\u142e\u0001\u0000\u0000\u0000\u1431\u1434\u0001"+
57479 		"\u0000\u0000\u0000\u1432\u1430\u0001\u0000\u0000\u0000\u1432\u1433\u0001"+
57480 		"\u0000\u0000\u0000\u1433\u1436\u0001\u0000\u0000\u0000\u1434\u1432\u0001"+
57481 		"\u0000\u0000\u0000\u1435\u1437\u0003\u02f2\u0179\u0000\u1436\u1435\u0001"+
57482 		"\u0000\u0000\u0000\u1436\u1437\u0001\u0000\u0000\u0000\u1437\u02cd\u0001"+
57483 		"\u0000\u0000\u0000\u1438\u1439\u0005\u001f\u0000\u0000\u1439\u143e\u0003"+
57484 		"\u02d0\u0168\u0000\u143a\u143b\u0005%\u0000\u0000\u143b\u143d\u0003\u02d0"+
57485 		"\u0168\u0000\u143c\u143a\u0001\u0000\u0000\u0000\u143d\u1440\u0001\u0000"+
57486 		"\u0000\u0000\u143e\u143c\u0001\u0000\u0000\u0000\u143e\u143f\u0001\u0000"+
57487 		"\u0000\u0000\u143f\u1441\u0001\u0000\u0000\u0000\u1440\u143e\u0001\u0000"+
57488 		"\u0000\u0000\u1441\u1442\u0005 \u0000\u0000\u1442\u1446\u0001\u0000\u0000"+
57489 		"\u0000\u1443\u1444\u0005\u001f\u0000\u0000\u1444\u1446\u0005 \u0000\u0000"+
57490 		"\u1445\u1438\u0001\u0000\u0000\u0000\u1445\u1443\u0001\u0000\u0000\u0000"+
57491 		"\u1446\u02cf\u0001\u0000\u0000\u0000\u1447\u144a\u0003b1\u0000\u1448\u144a"+
57492 		"\u0005\u009a\u0000\u0000\u1449\u1447\u0001\u0000\u0000\u0000\u1449\u1448"+
57493 		"\u0001\u0000\u0000\u0000\u144a\u02d1\u0001\u0000\u0000\u0000\u144b\u144d"+
57494 		"\u0003\u0306\u0183\u0000\u144c\u144b\u0001\u0000\u0000\u0000\u144c\u144d"+
57495 		"\u0001\u0000\u0000\u0000\u144d\u144e\u0001\u0000\u0000\u0000\u144e\u1450"+
57496 		"\u00051\u0000\u0000\u144f\u1451\u0003\u02e8\u0174\u0000\u1450\u144f\u0001"+
57497 		"\u0000\u0000\u0000\u1450\u1451\u0001\u0000\u0000\u0000\u1451\u1454\u0001"+
57498 		"\u0000\u0000\u0000\u1452\u1455\u0003\u02d6\u016b\u0000\u1453\u1455\u0003"+
57499 		"\u02d8\u016c\u0000\u1454\u1452\u0001\u0000\u0000\u0000\u1454\u1453\u0001"+
57500 		"\u0000\u0000\u0000\u1455\u1457\u0001\u0000\u0000\u0000\u1456\u1458\u0003"+
57501 		"\u030c\u0186\u0000\u1457\u1456\u0001\u0000\u0000\u0000\u1457\u1458\u0001"+
57502 		"\u0000\u0000\u0000\u1458\u145a\u0001\u0000\u0000\u0000\u1459\u145b\u0003"+
57503 		"\u02fe\u017f\u0000\u145a\u1459\u0001\u0000\u0000\u0000\u145a\u145b\u0001"+
57504 		"\u0000\u0000\u0000\u145b\u145d\u0001\u0000\u0000\u0000\u145c\u145e\u0003"+
57505 		"\u02d4\u016a\u0000\u145d\u145c\u0001\u0000\u0000\u0000\u145d\u145e\u0001"+
57506 		"\u0000\u0000\u0000\u145e\u02d3\u0001\u0000\u0000\u0000\u145f\u1460\u0005"+
57507 		"\u0101\u0000\u0000\u1460\u1461\u0003\u0316\u018b\u0000\u1461\u02d5\u0001"+
57508 		"\u0000\u0000\u0000\u1462\u1464\u0005U\u0000\u0000\u1463\u1462\u0001\u0000"+
57509 		"\u0000\u0000\u1463\u1464\u0001\u0000\u0000\u0000\u1464\u1466\u0001\u0000"+
57510 		"\u0000\u0000\u1465\u1467\u0005\u001f\u0000\u0000\u1466\u1465\u0001\u0000"+
57511 		"\u0000\u0000\u1466\u1467\u0001\u0000\u0000\u0000\u1467\u1468\u0001\u0000"+
57512 		"\u0000\u0000\u1468\u146a\u0003@ \u0000\u1469\u146b\u0005 \u0000\u0000"+
57513 		"\u146a\u1469\u0001\u0000\u0000\u0000\u146a\u146b\u0001\u0000\u0000\u0000"+
57514 		"\u146b\u1470\u0001\u0000\u0000\u0000\u146c\u146e\u0005`\u0000\u0000\u146d"+
57515 		"\u146c\u0001\u0000\u0000\u0000\u146d\u146e\u0001\u0000\u0000\u0000\u146e"+
57516 		"\u146f\u0001\u0000\u0000\u0000\u146f\u1471\u0003\\.\u0000\u1470\u146d"+
57517 		"\u0001\u0000\u0000\u0000\u1470\u1471\u0001\u0000\u0000\u0000\u1471\u02d7"+
57518 		"\u0001\u0000\u0000\u0000\u1472\u1473\u0003\u02da\u016d\u0000\u1473\u1474"+
57519 		"\u0005U\u0000\u0000\u1474\u1475\u0003\u02f4\u017a\u0000\u1475\u147c\u0001"+
57520 		"\u0000\u0000\u0000\u1476\u1477\u0005U\u0000\u0000\u1477\u1478\u0003\u02da"+
57521 		"\u016d\u0000\u1478\u1479\u0005^\u0000\u0000\u1479\u147a\u0003\u02f4\u017a"+
57522 		"\u0000\u147a\u147c\u0001\u0000\u0000\u0000\u147b\u1472\u0001\u0000\u0000"+
57523 		"\u0000\u147b\u1476\u0001\u0000\u0000\u0000\u147c\u02d9\u0001\u0000\u0000"+
57524 		"\u0000\u147d\u147f\u0003@ \u0000\u147e\u1480\u0005\u0015\u0000\u0000\u147f"+
57525 		"\u147e\u0001\u0000\u0000\u0000\u147f\u1480\u0001\u0000\u0000\u0000\u1480"+
57526 		"\u1488\u0001\u0000\u0000\u0000\u1481\u1482\u0005%\u0000\u0000\u1482\u1484"+
57527 		"\u0003@ \u0000\u1483\u1485\u0005\u0015\u0000\u0000\u1484\u1483\u0001\u0000"+
57528 		"\u0000\u0000\u1484\u1485\u0001\u0000\u0000\u0000\u1485\u1487\u0001\u0000"+
57529 		"\u0000\u0000\u1486\u1481\u0001\u0000\u0000\u0000\u1487\u148a\u0001\u0000"+
57530 		"\u0000\u0000\u1488\u1486\u0001\u0000\u0000\u0000\u1488\u1489\u0001\u0000"+
57531 		"\u0000\u0000\u1489\u02db\u0001\u0000\u0000\u0000\u148a\u1488\u0001\u0000"+
57532 		"\u0000\u0000\u148b\u148c\u0003\u02de\u016f\u0000\u148c\u02dd\u0001\u0000"+
57533 		"\u0000\u0000\u148d\u1499\u0003\u02e0\u0170\u0000\u148e\u1490\u0005N\u0000"+
57534 		"\u0000\u148f\u1491\u0005r\u0000\u0000\u1490\u148f\u0001\u0000\u0000\u0000"+
57535 		"\u1490\u1491\u0001\u0000\u0000\u0000\u1491\u1495\u0001\u0000\u0000\u0000"+
57536 		"\u1492\u1495\u0005\u00bc\u0000\u0000\u1493\u1495\u0005\u00bd\u0000\u0000"+
57537 		"\u1494\u148e\u0001\u0000\u0000\u0000\u1494\u1492\u0001\u0000\u0000\u0000"+
57538 		"\u1494\u1493\u0001\u0000\u0000\u0000\u1495\u1496\u0001\u0000\u0000\u0000"+
57539 		"\u1496\u1498\u0003\u02e0\u0170\u0000\u1497\u1494\u0001\u0000\u0000\u0000"+
57540 		"\u1498\u149b\u0001\u0000\u0000\u0000\u1499\u1497\u0001\u0000\u0000\u0000"+
57541 		"\u1499\u149a\u0001\u0000\u0000\u0000\u149a\u02df\u0001\u0000\u0000\u0000"+
57542 		"\u149b\u1499\u0001\u0000\u0000\u0000\u149c\u149e\u0003\u0322\u0191\u0000"+
57543 		"\u149d\u149c\u0001\u0000\u0000\u0000\u149d\u149e\u0001\u0000\u0000\u0000"+
57544 		"\u149e\u149f\u0001\u0000\u0000\u0000\u149f\u14a1\u0005.\u0000\u0000\u14a0"+
57545 		"\u14a2\u0003\u02e2\u0171\u0000\u14a1\u14a0\u0001\u0000\u0000\u0000\u14a1"+
57546 		"\u14a2\u0001\u0000\u0000\u0000\u14a2\u14a3\u0001\u0000\u0000\u0000\u14a3"+
57547 		"\u14a5\u0003\u02e4\u0172\u0000\u14a4\u14a6\u0003\u02f0\u0178\u0000\u14a5"+
57548 		"\u14a4\u0001\u0000\u0000\u0000\u14a5\u14a6\u0001\u0000\u0000\u0000\u14a6"+
57549 		"\u14a8\u0001\u0000\u0000\u0000\u14a7\u14a9\u0003\u02f2\u0179\u0000\u14a8"+
57550 		"\u14a7\u0001\u0000\u0000\u0000\u14a8\u14a9\u0001\u0000\u0000\u0000\u14a9"+
57551 		"\u14ab\u0001\u0000\u0000\u0000\u14aa\u14ac\u0003\u02fe\u017f\u0000\u14ab"+
57552 		"\u14aa\u0001\u0000\u0000\u0000\u14ab\u14ac\u0001\u0000\u0000\u0000\u14ac"+
57553 		"\u14ae\u0001\u0000\u0000\u0000\u14ad\u14af\u0003\u0300\u0180\u0000\u14ae"+
57554 		"\u14ad\u0001\u0000\u0000\u0000\u14ae\u14af\u0001\u0000\u0000\u0000\u14af"+
57555 		"\u14b1\u0001\u0000\u0000\u0000\u14b0\u14b2\u0003\u0302\u0181\u0000\u14b1"+
57556 		"\u14b0\u0001\u0000\u0000\u0000\u14b1\u14b2\u0001\u0000\u0000\u0000\u14b2"+
57557 		"\u14b4\u0001\u0000\u0000\u0000\u14b3\u14b5\u0003\u00a8T\u0000\u14b4\u14b3"+
57558 		"\u0001\u0000\u0000\u0000\u14b4\u14b5\u0001\u0000\u0000\u0000\u14b5\u14b7"+
57559 		"\u0001\u0000\u0000\u0000\u14b6\u14b8\u0003\u031a\u018d\u0000\u14b7\u14b6"+
57560 		"\u0001\u0000\u0000\u0000\u14b7\u14b8\u0001\u0000\u0000\u0000\u14b8\u02e1"+
57561 		"\u0001\u0000\u0000\u0000\u14b9\u14ba\u0007O\u0000\u0000\u14ba\u02e3\u0001"+
57562 		"\u0000\u0000\u0000\u14bb\u14c1\u0003\u02e6\u0173\u0000\u14bc\u14be\u0003"+
57563 		"\u02e8\u0174\u0000\u14bd\u14bf\u0003\u02e6\u0173\u0000\u14be\u14bd\u0001"+
57564 		"\u0000\u0000\u0000\u14be\u14bf\u0001\u0000\u0000\u0000\u14bf\u14c1\u0001"+
57565 		"\u0000\u0000\u0000\u14c0\u14bb\u0001\u0000\u0000\u0000\u14c0\u14bc\u0001"+
57566 		"\u0000\u0000\u0000\u14c1\u14c6\u0001\u0000\u0000\u0000\u14c2\u14c3\u0005"+
57567 		"%\u0000\u0000\u14c3\u14c5\u0003\u02e6\u0173\u0000\u14c4\u14c2\u0001\u0000"+
57568 		"\u0000\u0000\u14c5\u14c8\u0001\u0000\u0000\u0000\u14c6\u14c4\u0001\u0000"+
57569 		"\u0000\u0000\u14c6\u14c7\u0001\u0000\u0000\u0000\u14c7\u02e5\u0001\u0000"+
57570 		"\u0000\u0000\u14c8\u14c6\u0001\u0000\u0000\u0000\u14c9\u14df\u0003\u02ee"+
57571 		"\u0177\u0000\u14ca\u14df\u0003\u02ec\u0176\u0000\u14cb\u14cc\u0003\\."+
57572 		"\u0000\u14cc\u14cd\u0005\u0018\u0000\u0000\u14cd\u14cf\u0001\u0000\u0000"+
57573 		"\u0000\u14ce\u14cb\u0001\u0000\u0000\u0000\u14ce\u14cf\u0001\u0000\u0000"+
57574 		"\u0000\u14cf\u14d2\u0001\u0000\u0000\u0000\u14d0\u14d3\u0003H$\u0000\u14d1"+
57575 		"\u14d3\u0003b1\u0000\u14d2\u14d0\u0001\u0000\u0000\u0000\u14d2\u14d1\u0001"+
57576 		"\u0000\u0000\u0000\u14d3\u14df\u0001\u0000\u0000\u0000\u14d4\u14d7\u0003"+
57577 		"H$\u0000\u14d5\u14d7\u0003b1\u0000\u14d6\u14d4\u0001\u0000\u0000\u0000"+
57578 		"\u14d6\u14d5\u0001\u0000\u0000\u0000\u14d7\u14dc\u0001\u0000\u0000\u0000"+
57579 		"\u14d8\u14da\u0005`\u0000\u0000\u14d9\u14d8\u0001\u0000\u0000\u0000\u14d9"+
57580 		"\u14da\u0001\u0000\u0000\u0000\u14da\u14db\u0001\u0000\u0000\u0000\u14db"+
57581 		"\u14dd\u0003\\.\u0000\u14dc\u14d9\u0001\u0000\u0000\u0000\u14dc\u14dd"+
57582 		"\u0001\u0000\u0000\u0000\u14dd\u14df\u0001\u0000\u0000\u0000\u14de\u14c9"+
57583 		"\u0001\u0000\u0000\u0000\u14de\u14ca\u0001\u0000\u0000\u0000\u14de\u14ce"+
57584 		"\u0001\u0000\u0000\u0000\u14de\u14d6\u0001\u0000\u0000\u0000\u14df\u02e7"+
57585 		"\u0001\u0000\u0000\u0000\u14e0\u14e2\u0005\u00f7\u0000\u0000\u14e1\u14e3"+
57586 		"\u0005\u001f\u0000\u0000\u14e2\u14e1\u0001\u0000\u0000\u0000\u14e2\u14e3"+
57587 		"\u0001\u0000\u0000\u0000\u14e3\u14e4\u0001\u0000\u0000\u0000\u14e4\u14e6"+
57588 		"\u0003\u02ea\u0175\u0000\u14e5\u14e7\u0005 \u0000\u0000\u14e6\u14e5\u0001"+
57589 		"\u0000\u0000\u0000\u14e6\u14e7\u0001\u0000\u0000\u0000\u14e7\u14e9\u0001"+
57590 		"\u0000\u0000\u0000\u14e8\u14ea\u0005\u00ba\u0000\u0000\u14e9\u14e8\u0001"+
57591 		"\u0000\u0000\u0000\u14e9\u14ea\u0001\u0000\u0000\u0000\u14ea\u14ed\u0001"+
57592 		"\u0000\u0000\u0000\u14eb\u14ec\u0005M\u0000\u0000\u14ec\u14ee\u0005\u00bb"+
57593 		"\u0000\u0000\u14ed\u14eb\u0001\u0000\u0000\u0000\u14ed\u14ee\u0001\u0000"+
57594 		"\u0000\u0000\u14ee\u14fc\u0001\u0000\u0000\u0000\u14ef\u14f0\u0005\u01bd"+
57595 		"\u0000\u0000\u14f0\u14f1\u0005\u001f\u0000\u0000\u14f1\u14f2\u0005 \u0000"+
57596 		"\u0000\u14f2\u14f3\u0005\u0131\u0000\u0000\u14f3\u14f4\u0005\u001f\u0000"+
57597 		"\u0000\u14f4\u14f5\u0003\u00a8T\u0000\u14f5\u14fa\u0005 \u0000\u0000\u14f6"+
57598 		"\u14f8\u0005`\u0000\u0000\u14f7\u14f6\u0001\u0000\u0000\u0000\u14f7\u14f8"+
57599 		"\u0001\u0000\u0000\u0000\u14f8\u14f9\u0001\u0000\u0000\u0000\u14f9\u14fb"+
57600 		"\u0003\\.\u0000\u14fa\u14f7\u0001\u0000\u0000\u0000\u14fa\u14fb\u0001"+
57601 		"\u0000\u0000\u0000\u14fb\u14fd\u0001\u0000\u0000\u0000\u14fc\u14ef\u0001"+
57602 		"\u0000\u0000\u0000\u14fc\u14fd\u0001\u0000\u0000\u0000\u14fd\u02e9\u0001"+
57603 		"\u0000\u0000\u0000\u14fe\u1501\u0003\u001e\u000f\u0000\u14ff\u1501\u0003"+
57604 		"\u0018\f\u0000\u1500\u14fe\u0001\u0000\u0000\u0000\u1500\u14ff\u0001\u0000"+
57605 		"\u0000\u0000\u1501\u02eb\u0001\u0000\u0000\u0000\u1502\u1503\u0005\u0011"+
57606 		"\u0000\u0000\u1503\u02ed\u0001\u0000\u0000\u0000\u1504\u1505\u0003*\u0015"+
57607 		"\u0000\u1505\u1506\u0005\u0015\u0000\u0000\u1506\u02ef\u0001\u0000\u0000"+
57608 		"\u0000\u1507\u1508\u0005K\u0000\u0000\u1508\u1509\u0003@ \u0000\u1509"+
57609 		"\u02f1\u0001\u0000\u0000\u0000\u150a\u150b\u0005U\u0000\u0000\u150b\u150c"+
57610 		"\u0003\u02f4\u017a\u0000\u150c\u02f3\u0001\u0000\u0000\u0000\u150d\u1512"+
57611 		"\u0003\u02f6\u017b\u0000\u150e\u150f\u0005%\u0000\u0000\u150f\u1511\u0003"+
57612 		"\u02f6\u017b\u0000\u1510\u150e\u0001\u0000\u0000\u0000\u1511\u1514\u0001"+
57613 		"\u0000\u0000\u0000\u1512\u1510\u0001\u0000\u0000\u0000\u1512\u1513\u0001"+
57614 		"\u0000\u0000\u0000\u1513\u02f5\u0001\u0000\u0000\u0000\u1514\u1512\u0001"+
57615 		"\u0000\u0000\u0000\u1515\u1519\u0003\u02f8\u017c\u0000\u1516\u1518\u0003"+
57616 		"\u02fa\u017d\u0000\u1517\u1516\u0001\u0000\u0000\u0000\u1518\u151b\u0001"+
57617 		"\u0000\u0000\u0000\u1519\u1517\u0001\u0000\u0000\u0000\u1519\u151a\u0001"+
57618 		"\u0000\u0000\u0000\u151a\u02f7\u0001\u0000\u0000\u0000\u151b\u1519\u0001"+
57619 		"\u0000\u0000\u0000\u151c\u1521\u0003@ \u0000\u151d\u151f\u0005`\u0000"+
57620 		"\u0000\u151e\u151d\u0001\u0000\u0000\u0000\u151e\u151f\u0001\u0000\u0000"+
57621 		"\u0000\u151f\u1520\u0001\u0000\u0000\u0000\u1520\u1522\u0003\\.\u0000"+
57622 		"\u1521\u151e\u0001\u0000\u0000\u0000\u1521\u1522\u0001\u0000\u0000\u0000"+
57623 		"\u1522\u1537\u0001\u0000\u0000\u0000\u1523\u1525\u0003\u0304\u0182\u0000"+
57624 		"\u1524\u1526\u0005`\u0000\u0000\u1525\u1524\u0001\u0000\u0000\u0000\u1525"+
57625 		"\u1526\u0001\u0000\u0000\u0000\u1526\u1527\u0001\u0000\u0000\u0000\u1527"+
57626 		"\u1529\u0003\\.\u0000\u1528\u152a\u0003P(\u0000\u1529\u1528\u0001\u0000"+
57627 		"\u0000\u0000\u1529\u152a\u0001\u0000\u0000\u0000\u152a\u1537\u0001\u0000"+
57628 		"\u0000\u0000\u152b\u1530\u0003b1\u0000\u152c\u152e\u0005`\u0000\u0000"+
57629 		"\u152d\u152c\u0001\u0000\u0000\u0000\u152d\u152e\u0001\u0000\u0000\u0000"+
57630 		"\u152e\u152f\u0001\u0000\u0000\u0000\u152f\u1531\u0003\\.\u0000\u1530"+
57631 		"\u152d\u0001\u0000\u0000\u0000\u1530\u1531\u0001\u0000\u0000\u0000\u1531"+
57632 		"\u1537\u0001\u0000\u0000\u0000\u1532\u1533\u0005\u001f\u0000\u0000\u1533"+
57633 		"\u1534\u0003\u02f4\u017a\u0000\u1534\u1535\u0005 \u0000\u0000\u1535\u1537"+
57634 		"\u0001\u0000\u0000\u0000\u1536\u151c\u0001\u0000\u0000\u0000\u1536\u1523"+
57635 		"\u0001\u0000\u0000\u0000\u1536\u152b\u0001\u0000\u0000\u0000\u1536\u1532"+
57636 		"\u0001\u0000\u0000\u0000\u1537\u02f9\u0001\u0000\u0000\u0000\u1538\u153a"+
57637 		"\u0005V\u0000\u0000\u1539\u1538\u0001\u0000\u0000\u0000\u1539\u153a\u0001"+
57638 		"\u0000\u0000\u0000\u153a\u153c\u0001\u0000\u0000\u0000\u153b\u153d\u0007"+
57639 		"P\u0000\u0000\u153c\u153b\u0001\u0000\u0000\u0000\u153c\u153d\u0001\u0000"+
57640 		"\u0000\u0000\u153d\u153e\u0001\u0000\u0000\u0000\u153e\u153f\u0005W\u0000"+
57641 		"\u0000\u153f\u1540\u0001\u0000\u0000\u0000\u1540\u1542\u0003\u02f8\u017c"+
57642 		"\u0000\u1541\u1543\u0003\u02fc\u017e\u0000\u1542\u1541\u0001\u0000\u0000"+
57643 		"\u0000\u1542\u1543\u0001\u0000\u0000\u0000\u1543\u1557\u0001\u0000\u0000"+
57644 		"\u0000\u1544\u1546\u0005V\u0000\u0000\u1545\u1544\u0001\u0000\u0000\u0000"+
57645 		"\u1545\u1546\u0001\u0000\u0000\u0000\u1546\u1547\u0001\u0000\u0000\u0000"+
57646 		"\u1547\u1549\u0007Q\u0000\u0000\u1548\u154a\u0005Z\u0000\u0000\u1549\u1548"+
57647 		"\u0001\u0000\u0000\u0000\u1549\u154a\u0001\u0000\u0000\u0000\u154a\u154b"+
57648 		"\u0001\u0000\u0000\u0000\u154b\u154c\u0005W\u0000\u0000\u154c\u154e\u0003"+
57649 		"\u02f8\u017c\u0000\u154d\u154f\u0003\u02fc\u017e\u0000\u154e\u154d\u0001"+
57650 		"\u0000\u0000\u0000\u154e\u154f\u0001\u0000\u0000\u0000\u154f\u1557\u0001"+
57651 		"\u0000\u0000\u0000\u1550\u1551\u0007R\u0000\u0000\u1551\u1552\u0005\u00d7"+
57652 		"\u0000\u0000\u1552\u1554\u0003\u02f8\u017c\u0000\u1553\u1555\u0003\u02fc"+
57653 		"\u017e\u0000\u1554\u1553\u0001\u0000\u0000\u0000\u1554\u1555\u0001\u0000"+
57654 		"\u0000\u0000\u1555\u1557\u0001\u0000\u0000\u0000\u1556\u1539\u0001\u0000"+
57655 		"\u0000\u0000\u1556\u1545\u0001\u0000\u0000\u0000\u1556\u1550\u0001\u0000"+
57656 		"\u0000\u0000\u1557\u02fb\u0001\u0000\u0000\u0000\u1558\u1559\u0005a\u0000"+
57657 		"\u0000\u1559\u155d\u0003b1\u0000\u155a\u155b\u0005^\u0000\u0000\u155b"+
57658 		"\u155d\u0003P(\u0000\u155c\u1558\u0001\u0000\u0000\u0000\u155c\u155a\u0001"+
57659 		"\u0000\u0000\u0000\u155d\u02fd\u0001\u0000\u0000\u0000\u155e\u155f\u0005"+
57660 		"_\u0000\u0000\u155f\u1560\u0003b1\u0000\u1560\u02ff\u0001\u0000\u0000"+
57661 		"\u0000\u1561\u1562\u0005v\u0000\u0000\u1562\u1563\u0005w\u0000\u0000\u1563"+
57662 		"\u1568\u0003\u00aaU\u0000\u1564\u1565\u0005%\u0000\u0000\u1565\u1567\u0003"+
57663 		"\u00aaU\u0000\u1566\u1564\u0001\u0000\u0000\u0000\u1567\u156a\u0001\u0000"+
57664 		"\u0000\u0000\u1568\u1566\u0001\u0000\u0000\u0000\u1568\u1569\u0001\u0000"+
57665 		"\u0000\u0000\u1569\u0301\u0001\u0000\u0000\u0000\u156a\u1568\u0001\u0000"+
57666 		"\u0000\u0000\u156b\u156c\u0005z\u0000\u0000\u156c\u156d\u0003b1\u0000"+
57667 		"\u156d\u0303\u0001\u0000\u0000\u0000\u156e\u156f\u0005\u001f\u0000\u0000"+
57668 		"\u156f\u1570\u0003\u02de\u016f\u0000\u1570\u1571\u0005 \u0000\u0000\u1571"+
57669 		"\u0305\u0001\u0000\u0000\u0000\u1572\u1573\u0005M\u0000\u0000\u1573\u1574"+
57670 		"\u0003\u0308\u0184\u0000\u1574\u0307\u0001\u0000\u0000\u0000\u1575\u157a"+
57671 		"\u0003\u030a\u0185\u0000\u1576\u1577\u0005%\u0000\u0000\u1577\u1579\u0003"+
57672 		"\u030a\u0185\u0000\u1578\u1576\u0001\u0000\u0000\u0000\u1579\u157c\u0001"+
57673 		"\u0000\u0000\u0000\u157a\u1578\u0001\u0000\u0000\u0000\u157a\u157b\u0001"+
57674 		"\u0000\u0000\u0000\u157b\u0309\u0001\u0000\u0000\u0000\u157c\u157a\u0001"+
57675 		"\u0000\u0000\u0000\u157d\u157f\u0003*\u0015\u0000\u157e\u1580\u0003P("+
57676 		"\u0000\u157f\u157e\u0001\u0000\u0000\u0000\u157f\u1580\u0001\u0000\u0000"+
57677 		"\u0000\u1580\u1581\u0001\u0000\u0000\u0000\u1581\u1582\u0005`\u0000\u0000"+
57678 		"\u1582\u1583\u0003\u0304\u0182\u0000\u1583\u030b\u0001\u0000\u0000\u0000"+
57679 		"\u1584\u1587\u0005\u01d1\u0000\u0000\u1585\u1588\u0003\u030e\u0187\u0000"+
57680 		"\u1586\u1588\u0003\u0312\u0189\u0000\u1587\u1585\u0001\u0000\u0000\u0000"+
57681 		"\u1587\u1586\u0001\u0000\u0000\u0000\u1588\u158e\u0001\u0000\u0000\u0000"+
57682 		"\u1589\u158a\u0005K\u0000\u0000\u158a\u158c\u0003\u0314\u018a\u0000\u158b"+
57683 		"\u158d\u0003P(\u0000\u158c\u158b\u0001\u0000\u0000\u0000\u158c\u158d\u0001"+
57684 		"\u0000\u0000\u0000\u158d\u158f\u0001\u0000\u0000\u0000\u158e\u1589\u0001"+
57685 		"\u0000\u0000\u0000\u158e\u158f\u0001\u0000\u0000\u0000\u158f\u030d\u0001"+
57686 		"\u0000\u0000\u0000\u1590\u1595\u0003\u0310\u0188\u0000\u1591\u1592\u0005"+
57687 		"%\u0000\u0000\u1592\u1594\u0003\u0310\u0188\u0000\u1593\u1591\u0001\u0000"+
57688 		"\u0000\u0000\u1594\u1597\u0001\u0000\u0000\u0000\u1595\u1593\u0001\u0000"+
57689 		"\u0000\u0000\u1595\u1596\u0001\u0000\u0000\u0000\u1596\u030f\u0001\u0000"+
57690 		"\u0000\u0000\u1597\u1595\u0001\u0000\u0000\u0000\u1598\u1599\u0007S\u0000"+
57691 		"\u0000\u1599\u159a\u0005\u0014\u0000\u0000\u159a\u159f\u0003N\'\u0000"+
57692 		"\u159b\u159d\u0005`\u0000\u0000\u159c\u159b\u0001\u0000\u0000\u0000\u159c"+
57693 		"\u159d\u0001\u0000\u0000\u0000\u159d\u159e\u0001\u0000\u0000\u0000\u159e"+
57694 		"\u15a0\u0003\\.\u0000\u159f\u159c\u0001\u0000\u0000\u0000\u159f\u15a0"+
57695 		"\u0001\u0000\u0000\u0000\u15a0\u0311\u0001\u0000\u0000\u0000\u15a1\u15a2"+
57696 		"\u0007S\u0000\u0000\u15a2\u15a3\u0005\u0015\u0000\u0000\u15a3\u0313\u0001"+
57697 		"\u0000\u0000\u0000\u15a4\u15a5\u0005*\u0000\u0000\u15a5\u15a8\u0003N\'"+
57698 		"\u0000\u15a6\u15a8\u0003@ \u0000\u15a7\u15a4\u0001\u0000\u0000\u0000\u15a7"+
57699 		"\u15a6\u0001\u0000\u0000\u0000\u15a8\u0315\u0001\u0000\u0000\u0000\u15a9"+
57700 		"\u15aa\u0007T\u0000\u0000\u15aa\u15f1\u0005v\u0000\u0000\u15ab\u15ac\u0007"+
57701 		"U\u0000\u0000\u15ac\u15f1\u0005N\u0000\u0000\u15ad\u15ae\u0007V\u0000"+
57702 		"\u0000\u15ae\u15f1\u0005W\u0000\u0000\u15af\u15b0\u0005\u00c1\u0000\u0000"+
57703 		"\u15b0\u15f1\u0005\u00c2\u0000\u0000\u15b1\u15b2\u0005\u00c3\u0000\u0000"+
57704 		"\u15b2\u15f1\u0005\u02d5\u0000\u0000\u15b3\u15b4\u0005\u00c4\u0000\u0000"+
57705 		"\u15b4\u15f1\u0005u\u0000\u0000\u15b5\u15b6\u0007W\u0000\u0000\u15b6\u15f1"+
57706 		"\u0005\u01e6\u0000\u0000\u15b7\u15b8\u0007W\u0000\u0000\u15b8\u15f1\u0005"+
57707 		"\u01e7\u0000\u0000\u15b9\u15f1\u0005\u01e8\u0000\u0000\u15ba\u15bb\u0005"+
57708 		"\u00c5\u0000\u0000\u15bb\u15f1\u0005\u00c6\u0000\u0000\u15bc\u15bd\u0005"+
57709 		"\u01e9\u0000\u0000\u15bd\u15f1\u0005\u00c6\u0000\u0000\u15be\u15bf\u0005"+
57710 		"\u01ea\u0000\u0000\u15bf\u15c0\u0005\u0018\u0000\u0000\u15c0\u15f1\u0005"+
57711 		"\u02d7\u0000\u0000\u15c1\u15c2\u0005\u01eb\u0000\u0000\u15c2\u15c3\u0005"+
57712 		"\u0018\u0000\u0000\u15c3\u15f1\u0005\u02d7\u0000\u0000\u15c4\u15c5\u0005"+
57713 		"\u012b\u0000\u0000\u15c5\u15f1\u0005\u02d5\u0000\u0000\u15c6\u15c7\u0005"+
57714 		"\u01ec\u0000\u0000\u15c7\u15f1\u0005\u02d5\u0000\u0000\u15c8\u15f1\u0005"+
57715 		"\u01ed\u0000\u0000\u15c9\u15ca\u0005\u001f\u0000\u0000\u15ca\u15cb\u0005"+
57716 		"\u00c7\u0000\u0000\u15cb\u15cc\u0005f\u0000\u0000\u15cc\u15cd\u0005\u001f"+
57717 		"\u0000\u0000\u15cd\u15d3\u0003\u00eau\u0000\u15ce\u15d2\u0005\u00fa\u0000"+
57718 		"\u0000\u15cf\u15d0\u0005\u0018\u0000\u0000\u15d0\u15d2\u0003\u001a\r\u0000"+
57719 		"\u15d1\u15ce\u0001\u0000\u0000\u0000\u15d1\u15cf\u0001\u0000\u0000\u0000"+
57720 		"\u15d2\u15d5\u0001\u0000\u0000\u0000\u15d3\u15d1\u0001\u0000\u0000\u0000"+
57721 		"\u15d3\u15d4\u0001\u0000\u0000\u0000\u15d4\u15d6\u0001\u0000\u0000\u0000"+
57722 		"\u15d5\u15d3\u0001\u0000\u0000\u0000\u15d6\u15d7\u0005 \u0000\u0000\u15d7"+
57723 		"\u15d8\u0005 \u0000\u0000\u15d8\u15f1\u0001\u0000\u0000\u0000\u15d9\u15da"+
57724 		"\u0005\u00c7\u0000\u0000\u15da\u15db\u0005f\u0000\u0000\u15db\u15f1\u0005"+
57725 		"\u00fa\u0000\u0000\u15dc\u15dd\u0005\u01ee\u0000\u0000\u15dd\u15f1\u0007"+
57726 		"C\u0000\u0000\u15de\u15df\u0005\u01ef\u0000\u0000\u15df\u15f1\u0005\u02d5"+
57727 		"\u0000\u0000\u15e0\u15f1\u0005\u01f0\u0000\u0000\u15e1\u15e2\u0005\u01f1"+
57728 		"\u0000\u0000\u15e2\u15f1\u0005\u00c6\u0000\u0000\u15e3\u15e4\u0005\u00be"+
57729 		"\u0000\u0000\u15e4\u15e5\u0005\u00ca\u0000\u0000\u15e5\u15e9\u0005\u001f"+
57730 		"\u0000\u0000\u15e6\u15e8\u0003\u0318\u018c\u0000\u15e7\u15e6\u0001\u0000"+
57731 		"\u0000\u0000\u15e8\u15eb\u0001\u0000\u0000\u0000\u15e9\u15e7\u0001\u0000"+
57732 		"\u0000\u0000\u15e9\u15ea\u0001\u0000\u0000\u0000\u15ea\u15ec\u0001\u0000"+
57733 		"\u0000\u0000\u15eb\u15e9\u0001\u0000\u0000\u0000\u15ec\u15f1\u0005 \u0000"+
57734 		"\u0000\u15ed\u15ee\u0005\u00be\u0000\u0000\u15ee\u15ef\u0005\u00c6\u0000"+
57735 		"\u0000\u15ef\u15f1\u0005\u02da\u0000\u0000\u15f0\u15a9\u0001\u0000\u0000"+
57736 		"\u0000\u15f0\u15ab\u0001\u0000\u0000\u0000\u15f0\u15ad\u0001\u0000\u0000"+
57737 		"\u0000\u15f0\u15af\u0001\u0000\u0000\u0000\u15f0\u15b1\u0001\u0000\u0000"+
57738 		"\u0000\u15f0\u15b3\u0001\u0000\u0000\u0000\u15f0\u15b5\u0001\u0000\u0000"+
57739 		"\u0000\u15f0\u15b7\u0001\u0000\u0000\u0000\u15f0\u15b9\u0001\u0000\u0000"+
57740 		"\u0000\u15f0\u15ba\u0001\u0000\u0000\u0000\u15f0\u15bc\u0001\u0000\u0000"+
57741 		"\u0000\u15f0\u15be\u0001\u0000\u0000\u0000\u15f0\u15c1\u0001\u0000\u0000"+
57742 		"\u0000\u15f0\u15c4\u0001\u0000\u0000\u0000\u15f0\u15c6\u0001\u0000\u0000"+
57743 		"\u0000\u15f0\u15c8\u0001\u0000\u0000\u0000\u15f0\u15c9\u0001\u0000\u0000"+
57744 		"\u0000\u15f0\u15d9\u0001\u0000\u0000\u0000\u15f0\u15dc\u0001\u0000\u0000"+
57745 		"\u0000\u15f0\u15de\u0001\u0000\u0000\u0000\u15f0\u15e0\u0001\u0000\u0000"+
57746 		"\u0000\u15f0\u15e1\u0001\u0000\u0000\u0000\u15f0\u15e3\u0001\u0000\u0000"+
57747 		"\u0000\u15f0\u15ed\u0001\u0000\u0000\u0000\u15f1\u0317\u0001\u0000\u0000"+
57748 		"\u0000\u15f2\u15f3\u0005\'\u0000\u0000\u15f3\u15f4\u0005\u01d4\u0000\u0000"+
57749 		"\u15f4\u1629\u0005\'\u0000\u0000\u15f5\u15f6\u0005\'\u0000\u0000\u15f6"+
57750 		"\u15f7\u0005\u01d5\u0000\u0000\u15f7\u1629\u0005\'\u0000\u0000\u15f8\u15f9"+
57751 		"\u0005\'\u0000\u0000\u15f9\u15fa\u0005\u01d6\u0000\u0000\u15fa\u1629\u0005"+
57752 		"\'\u0000\u0000\u15fb\u15fc\u0005\'\u0000\u0000\u15fc\u15fd\u0005\u01d7"+
57753 		"\u0000\u0000\u15fd\u1629\u0005\'\u0000\u0000\u15fe\u15ff\u0005\'\u0000"+
57754 		"\u0000\u15ff\u1600\u0005\u01d8\u0000\u0000\u1600\u1629\u0005\'\u0000\u0000"+
57755 		"\u1601\u1602\u0005\'\u0000\u0000\u1602\u1603\u0005\u01d9\u0000\u0000\u1603"+
57756 		"\u1629\u0005\'\u0000\u0000\u1604\u1605\u0005\'\u0000\u0000\u1605\u1606"+
57757 		"\u0005\u01da\u0000\u0000\u1606\u1629\u0005\'\u0000\u0000\u1607\u1608\u0005"+
57758 		"\'\u0000\u0000\u1608\u1609\u0005\u01db\u0000\u0000\u1609\u1629\u0005\'"+
57759 		"\u0000\u0000\u160a\u160b\u0005\'\u0000\u0000\u160b\u160c\u0005\u01dc\u0000"+
57760 		"\u0000\u160c\u1629\u0005\'\u0000\u0000\u160d\u160e\u0005\'\u0000\u0000"+
57761 		"\u160e\u160f\u0005\u01dd\u0000\u0000\u160f\u1629\u0005\'\u0000\u0000\u1610"+
57762 		"\u1611\u0005\'\u0000\u0000\u1611\u1612\u0005\u01de\u0000\u0000\u1612\u1629"+
57763 		"\u0005\'\u0000\u0000\u1613\u1614\u0005\'\u0000\u0000\u1614\u1615\u0005"+
57764 		"\u01df\u0000\u0000\u1615\u1629\u0005\'\u0000\u0000\u1616\u1617\u0005\'"+
57765 		"\u0000\u0000\u1617\u1618\u0005\u01e0\u0000\u0000\u1618\u1629\u0005\'\u0000"+
57766 		"\u0000\u1619\u161a\u0005\'\u0000\u0000\u161a\u161b\u0005\u01e1\u0000\u0000"+
57767 		"\u161b\u1629\u0005\'\u0000\u0000\u161c\u161d\u0005\'\u0000\u0000\u161d"+
57768 		"\u161e\u0005\u01e2\u0000\u0000\u161e\u1629\u0005\'\u0000\u0000\u161f\u1620"+
57769 		"\u0005\'\u0000\u0000\u1620\u1621\u0005\u01e3\u0000\u0000\u1621\u1629\u0005"+
57770 		"\'\u0000\u0000\u1622\u1623\u0005\'\u0000\u0000\u1623\u1624\u0005\u01e4"+
57771 		"\u0000\u0000\u1624\u1629\u0005\'\u0000\u0000\u1625\u1626\u0005\'\u0000"+
57772 		"\u0000\u1626\u1627\u0005\u01e5\u0000\u0000\u1627\u1629\u0005\'\u0000\u0000"+
57773 		"\u1628\u15f2\u0001\u0000\u0000\u0000\u1628\u15f5\u0001\u0000\u0000\u0000"+
57774 		"\u1628\u15f8\u0001\u0000\u0000\u0000\u1628\u15fb\u0001\u0000\u0000\u0000"+
57775 		"\u1628\u15fe\u0001\u0000\u0000\u0000\u1628\u1601\u0001\u0000\u0000\u0000"+
57776 		"\u1628\u1604\u0001\u0000\u0000\u0000\u1628\u1607\u0001\u0000\u0000\u0000"+
57777 		"\u1628\u160a\u0001\u0000\u0000\u0000\u1628\u160d\u0001\u0000\u0000\u0000"+
57778 		"\u1628\u1610\u0001\u0000\u0000\u0000\u1628\u1613\u0001\u0000\u0000\u0000"+
57779 		"\u1628\u1616\u0001\u0000\u0000\u0000\u1628\u1619\u0001\u0000\u0000\u0000"+
57780 		"\u1628\u161c\u0001\u0000\u0000\u0000\u1628\u161f\u0001\u0000\u0000\u0000"+
57781 		"\u1628\u1622\u0001\u0000\u0000\u0000\u1628\u1625\u0001\u0000\u0000\u0000"+
57782 		"\u1629\u0319\u0001\u0000\u0000\u0000\u162a\u162e\u0005f\u0000\u0000\u162b"+
57783 		"\u162f\u0005\u02b7\u0000\u0000\u162c\u162f\u0003\u031c\u018e\u0000\u162d"+
57784 		"\u162f\u0003\u0320\u0190\u0000\u162e\u162b\u0001\u0000\u0000\u0000\u162e"+
57785 		"\u162c\u0001\u0000\u0000\u0000\u162e\u162d\u0001\u0000\u0000\u0000\u162f"+
57786 		"\u031b\u0001\u0000\u0000\u0000\u1630\u166b\u0005\u0164\u0000\u0000\u1631"+
57787 		"\u1636\u0005\u02b8\u0000\u0000\u1632\u1633\u0005\u001f\u0000\u0000\u1633"+
57788 		"\u1634\u0003\u001c\u000e\u0000\u1634\u1635\u0005 \u0000\u0000\u1635\u1637"+
57789 		"\u0001\u0000\u0000\u0000\u1636\u1632\u0001\u0000\u0000\u0000\u1636\u1637"+
57790 		"\u0001\u0000\u0000\u0000\u1637\u163a\u0001\u0000\u0000\u0000\u1638\u163a"+
57791 		"\u0005\u010a\u0000\u0000\u1639\u1631\u0001\u0000\u0000\u0000\u1639\u1638"+
57792 		"\u0001\u0000\u0000\u0000\u163a\u1650\u0001\u0000\u0000\u0000\u163b\u1647"+
57793 		"\u0003\u031e\u018f\u0000\u163c\u1645\u0005%\u0000\u0000\u163d\u1646\u0005"+
57794 		"\u02b9\u0000\u0000\u163e\u1643\u0005\u02ba\u0000\u0000\u163f\u1640\u0005"+
57795 		"\u001f\u0000\u0000\u1640\u1641\u0003\u001c\u000e\u0000\u1641\u1642\u0005"+
57796 		" \u0000\u0000\u1642\u1644\u0001\u0000\u0000\u0000\u1643\u163f\u0001\u0000"+
57797 		"\u0000\u0000\u1643\u1644\u0001\u0000\u0000\u0000\u1644\u1646\u0001\u0000"+
57798 		"\u0000\u0000\u1645\u163d\u0001\u0000\u0000\u0000\u1645\u163e\u0001\u0000"+
57799 		"\u0000\u0000\u1646\u1648\u0001\u0000\u0000\u0000\u1647\u163c\u0001\u0000"+
57800 		"\u0000\u0000\u1647\u1648\u0001\u0000\u0000\u0000\u1648\u164e\u0001\u0000"+
57801 		"\u0000\u0000\u1649\u164a\u0005%\u0000\u0000\u164a\u164c\u0005\u02bb\u0000"+
57802 		"\u0000\u164b\u164d\u0007X\u0000\u0000\u164c\u164b\u0001\u0000\u0000\u0000"+
57803 		"\u164c\u164d\u0001\u0000\u0000\u0000\u164d\u164f\u0001\u0000\u0000\u0000"+
57804 		"\u164e\u1649\u0001\u0000\u0000\u0000\u164e\u164f\u0001\u0000\u0000\u0000"+
57805 		"\u164f\u1651\u0001\u0000\u0000\u0000\u1650\u163b\u0001\u0000\u0000\u0000"+
57806 		"\u1650\u1651\u0001\u0000\u0000\u0000\u1651\u166c\u0001\u0000\u0000\u0000"+
57807 		"\u1652\u1658\u0005\u02be\u0000\u0000\u1653\u1656\u0003\u031e\u018f\u0000"+
57808 		"\u1654\u1655\u0005%\u0000\u0000\u1655\u1657\u0005\u02b9\u0000\u0000\u1656"+
57809 		"\u1654\u0001\u0000\u0000\u0000\u1656\u1657\u0001\u0000\u0000\u0000\u1657"+
57810 		"\u1659\u0001\u0000\u0000\u0000\u1658\u1653\u0001\u0000\u0000\u0000\u1658"+
57811 		"\u1659\u0001\u0000\u0000\u0000\u1659\u166c\u0001\u0000\u0000\u0000\u165a"+
57812 		"\u165f\u0005\u02bf\u0000\u0000\u165b\u165c\u0005\u001f\u0000\u0000\u165c"+
57813 		"\u165d\u0003\u001c\u000e\u0000\u165d\u165e\u0005 \u0000\u0000\u165e\u1660"+
57814 		"\u0001\u0000\u0000\u0000\u165f\u165b\u0001\u0000\u0000\u0000\u165f\u1660"+
57815 		"\u0001\u0000\u0000\u0000\u1660\u1669\u0001\u0000\u0000\u0000\u1661\u1667"+
57816 		"\u0003\u031e\u018f\u0000\u1662\u1663\u0005%\u0000\u0000\u1663\u1665\u0005"+
57817 		"\u02bb\u0000\u0000\u1664\u1666\u0007X\u0000\u0000\u1665\u1664\u0001\u0000"+
57818 		"\u0000\u0000\u1665\u1666\u0001\u0000\u0000\u0000\u1666\u1668\u0001\u0000"+
57819 		"\u0000\u0000\u1667\u1662\u0001\u0000\u0000\u0000\u1667\u1668\u0001\u0000"+
57820 		"\u0000\u0000\u1668\u166a\u0001\u0000\u0000\u0000\u1669\u1661\u0001\u0000"+
57821 		"\u0000\u0000\u1669\u166a\u0001\u0000\u0000\u0000\u166a\u166c\u0001\u0000"+
57822 		"\u0000\u0000\u166b\u1639\u0001\u0000\u0000\u0000\u166b\u1652\u0001\u0000"+
57823 		"\u0000\u0000\u166b\u165a\u0001\u0000\u0000\u0000\u166c\u031d\u0001\u0000"+
57824 		"\u0000\u0000\u166d\u166e\u0005%\u0000\u0000\u166e\u166f\u0005\u00f1\u0000"+
57825 		"\u0000\u166f\u1671\u0005\u02c0\u0000\u0000\u1670\u166d\u0001\u0000\u0000"+
57826 		"\u0000\u1670\u1671\u0001\u0000\u0000\u0000\u1671\u1674\u0001\u0000\u0000"+
57827 		"\u0000\u1672\u1673\u0005%\u0000\u0000\u1673\u1675\u0005\u00b0\u0000\u0000"+
57828 		"\u1674\u1672\u0001\u0000\u0000\u0000\u1674\u1675\u0001\u0000\u0000\u0000"+
57829 		"\u1675\u167e\u0001\u0000\u0000\u0000\u1676\u1677\u0005%\u0000\u0000\u1677"+
57830 		"\u167c\u0005\u02c1\u0000\u0000\u1678\u1679\u0005\u001f\u0000\u0000\u1679"+
57831 		"\u167a\u0003\u001c\u000e\u0000\u167a\u167b\u0005 \u0000\u0000\u167b\u167d"+
57832 		"\u0001\u0000\u0000\u0000\u167c\u1678\u0001\u0000\u0000\u0000\u167c\u167d"+
57833 		"\u0001\u0000\u0000\u0000\u167d\u167f\u0001\u0000\u0000\u0000\u167e\u1676"+
57834 		"\u0001\u0000\u0000\u0000\u167e\u167f\u0001\u0000\u0000\u0000\u167f\u031f"+
57835 		"\u0001\u0000\u0000\u0000\u1680\u1681\u0005\u02c2\u0000\u0000\u1681\u1694"+
57836 		"\u0007Y\u0000\u0000\u1682\u1683\u0005%\u0000\u0000\u1683\u1688\u0005\u02c1"+
57837 		"\u0000\u0000\u1684\u1685\u0005\u001f\u0000\u0000\u1685\u1686\u0003\u001c"+
57838 		"\u000e\u0000\u1686\u1687\u0005 \u0000\u0000\u1687\u1689\u0001\u0000\u0000"+
57839 		"\u0000\u1688\u1684\u0001\u0000\u0000\u0000\u1688\u1689\u0001\u0000\u0000"+
57840 		"\u0000\u1689\u168b\u0001\u0000\u0000\u0000\u168a\u1682\u0001\u0000\u0000"+
57841 		"\u0000\u168a\u168b\u0001\u0000\u0000\u0000\u168b\u168e\u0001\u0000\u0000"+
57842 		"\u0000\u168c\u168d\u0005%\u0000\u0000\u168d\u168f\u0005\u02c3\u0000\u0000"+
57843 		"\u168e\u168c\u0001\u0000\u0000\u0000\u168e\u168f\u0001\u0000\u0000\u0000"+
57844 		"\u168f\u1692\u0001\u0000\u0000\u0000\u1690\u1691\u0005%\u0000\u0000\u1691"+
57845 		"\u1693\u0005\u02c4\u0000\u0000\u1692\u1690\u0001\u0000\u0000\u0000\u1692"+
57846 		"\u1693\u0001\u0000\u0000\u0000\u1693\u1695\u0001\u0000\u0000\u0000\u1694"+
57847 		"\u168a\u0001\u0000\u0000\u0000\u1694\u1695\u0001\u0000\u0000\u0000\u1695"+
57848 		"\u0321\u0001\u0000\u0000\u0000\u1696\u169b\u0005M\u0000\u0000\u1697\u1699"+
57849 		"\u0003\u0324\u0192\u0000\u1698\u169a\u0005%\u0000\u0000\u1699\u1698\u0001"+
57850 		"\u0000\u0000\u0000\u1699\u169a\u0001\u0000\u0000\u0000\u169a\u169c\u0001"+
57851 		"\u0000\u0000\u0000\u169b\u1697\u0001\u0000\u0000\u0000\u169b\u169c\u0001"+
57852 		"\u0000\u0000\u0000\u169c\u169e\u0001\u0000\u0000\u0000\u169d\u169f\u0003"+
57853 		"\u0308\u0184\u0000\u169e\u169d\u0001\u0000\u0000\u0000\u169e\u169f\u0001"+
57854 		"\u0000\u0000\u0000\u169f\u0323\u0001\u0000\u0000\u0000\u16a0\u16a1\u0005"+
57855 		"\u02c5\u0000\u0000\u16a1\u16a2\u0005\u001f\u0000\u0000\u16a2\u16a7\u0003"+
57856 		"\u0326\u0193\u0000\u16a3\u16a4\u0005%\u0000\u0000\u16a4\u16a6\u0003\u0326"+
57857 		"\u0193\u0000\u16a5\u16a3\u0001\u0000\u0000\u0000\u16a6\u16a9\u0001\u0000"+
57858 		"\u0000\u0000\u16a7\u16a5\u0001\u0000\u0000\u0000\u16a7\u16a8\u0001\u0000"+
57859 		"\u0000\u0000\u16a8\u16aa\u0001\u0000\u0000\u0000\u16a9\u16a7\u0001\u0000"+
57860 		"\u0000\u0000\u16aa\u16ab\u0005 \u0000\u0000\u16ab\u0325\u0001\u0000\u0000"+
57861 		"\u0000\u16ac\u16ad\u0003\u0328\u0194\u0000\u16ad\u16ae\u0005`\u0000\u0000"+
57862 		"\u16ae\u16af\u0003\u032a\u0195\u0000\u16af\u16b2\u0001\u0000\u0000\u0000"+
57863 		"\u16b0\u16b2\u0003\u032c\u0196\u0000\u16b1\u16ac\u0001\u0000\u0000\u0000"+
57864 		"\u16b1\u16b0\u0001\u0000\u0000\u0000\u16b2\u0327\u0001\u0000\u0000\u0000"+
57865 		"\u16b3\u16b4\u0003\u001c\u000e\u0000\u16b4\u0329\u0001\u0000\u0000\u0000"+
57866 		"\u16b5\u16b6\u0003*\u0015\u0000\u16b6\u032b\u0001\u0000\u0000\u0000\u16b7"+
57867 		"\u16b8\u0005\u009a\u0000\u0000\u16b8\u16b9\u0003\u0328\u0194\u0000\u16b9"+
57868 		"\u032d\u0001\u0000\u0000\u0000\u16ba\u16bd\u00057\u0000\u0000\u16bb\u16be"+
57869 		"\u0003\u0330\u0198\u0000\u16bc\u16be\u0003\u0332\u0199\u0000\u16bd\u16bb"+
57870 		"\u0001\u0000\u0000\u0000\u16bd\u16bc\u0001\u0000\u0000\u0000\u16be\u032f"+
57871 		"\u0001\u0000\u0000\u0000\u16bf\u16c2\u0003\u0334\u019a\u0000\u16c0\u16c1"+
57872 		"\u0005a\u0000\u0000\u16c1\u16c3\u0003\u0336\u019b\u0000\u16c2\u16c0\u0001"+
57873 		"\u0000\u0000\u0000\u16c2\u16c3\u0001\u0000\u0000\u0000\u16c3\u16c4\u0001"+
57874 		"\u0000\u0000\u0000\u16c4\u16c5\u0005g\u0000\u0000\u16c5\u16ca\u0003\u033e"+
57875 		"\u019f\u0000\u16c6\u16c7\u0005%\u0000\u0000\u16c7\u16c9\u0003\u033e\u019f"+
57876 		"\u0000\u16c8\u16c6\u0001\u0000\u0000\u0000\u16c9\u16cc\u0001\u0000\u0000"+
57877 		"\u0000\u16ca\u16c8\u0001\u0000\u0000\u0000\u16ca\u16cb\u0001\u0000\u0000"+
57878 		"\u0000\u16cb\u16d0\u0001\u0000\u0000\u0000\u16cc\u16ca\u0001\u0000\u0000"+
57879 		"\u0000\u16cd\u16ce\u0005M\u0000\u0000\u16ce\u16cf\u00057\u0000\u0000\u16cf"+
57880 		"\u16d1\u0005\u0101\u0000\u0000\u16d0\u16cd\u0001\u0000\u0000\u0000\u16d0"+
57881 		"\u16d1\u0001\u0000\u0000\u0000\u16d1\u16d4\u0001\u0000\u0000\u0000\u16d2"+
57882 		"\u16d3\u0005`\u0000\u0000\u16d3\u16d5\u0003\u033e\u019f\u0000\u16d4\u16d2"+
57883 		"\u0001\u0000\u0000\u0000\u16d4\u16d5\u0001\u0000\u0000\u0000\u16d5\u0331"+
57884 		"\u0001\u0000\u0000\u0000\u16d6\u16d9\u0003\u0338\u019c\u0000\u16d7\u16d8"+
57885 		"\u0005a\u0000\u0000\u16d8\u16da\u0003\u033a\u019d\u0000\u16d9\u16d7\u0001"+
57886 		"\u0000\u0000\u0000\u16d9\u16da\u0001\u0000\u0000\u0000\u16da\u16db\u0001"+
57887 		"\u0000\u0000\u0000\u16db\u16dc\u0005g\u0000\u0000\u16dc\u16e1\u0003\u033e"+
57888 		"\u019f\u0000\u16dd\u16de\u0005%\u0000\u0000\u16de\u16e0\u0003\u033e\u019f"+
57889 		"\u0000\u16df\u16dd\u0001\u0000\u0000\u0000\u16e0\u16e3\u0001\u0000\u0000"+
57890 		"\u0000\u16e1\u16df\u0001\u0000\u0000\u0000\u16e1\u16e2\u0001\u0000\u0000"+
57891 		"\u0000\u16e2\u16e7\u0001\u0000\u0000\u0000\u16e3\u16e1\u0001\u0000\u0000"+
57892 		"\u0000\u16e4\u16e5\u0005M\u0000\u0000\u16e5\u16e6\u00057\u0000\u0000\u16e6"+
57893 		"\u16e8\u0005\u0101\u0000\u0000\u16e7\u16e4\u0001\u0000\u0000\u0000\u16e7"+
57894 		"\u16e8\u0001\u0000\u0000\u0000\u16e8\u0333\u0001\u0000\u0000\u0000\u16e9"+
57895 		"\u16eb\u0003\u034e\u01a7\u0000\u16ea\u16ec\u0003P(\u0000\u16eb\u16ea\u0001"+
57896 		"\u0000\u0000\u0000\u16eb\u16ec\u0001\u0000\u0000\u0000\u16ec\u16f4\u0001"+
57897 		"\u0000\u0000\u0000\u16ed\u16ee\u0005%\u0000\u0000\u16ee\u16f0\u0003\u034e"+
57898 		"\u01a7\u0000\u16ef\u16f1\u0003P(\u0000\u16f0\u16ef\u0001\u0000\u0000\u0000"+
57899 		"\u16f0\u16f1\u0001\u0000\u0000\u0000\u16f1\u16f3\u0001\u0000\u0000\u0000"+
57900 		"\u16f2\u16ed\u0001\u0000\u0000\u0000\u16f3\u16f6\u0001\u0000\u0000\u0000"+
57901 		"\u16f4\u16f2\u0001\u0000\u0000\u0000\u16f4\u16f5\u0001\u0000\u0000\u0000"+
57902 		"\u16f5\u0335\u0001\u0000\u0000\u0000\u16f6\u16f4\u0001\u0000\u0000\u0000"+
57903 		"\u16f7\u16f8\u0003\u038c\u01c6\u0000\u16f8\u16f9\u0005\u000e\u0000\u0000"+
57904 		"\u16f9\u16fa\u0005\u000e\u0000\u0000\u16fa\u16fc\u0001\u0000\u0000\u0000"+
57905 		"\u16fb\u16f7\u0001\u0000\u0000\u0000\u16fb\u16fc\u0001\u0000\u0000\u0000"+
57906 		"\u16fc\u16fd\u0001\u0000\u0000\u0000\u16fd\u16fe\u0003\u033c\u019e\u0000"+
57907 		"\u16fe\u0337\u0001\u0000\u0000\u0000\u16ff\u1704\u0003\u034e\u01a7\u0000"+
57908 		"\u1700\u1701\u0005%\u0000\u0000\u1701\u1703\u0003\u034e\u01a7\u0000\u1702"+
57909 		"\u1700\u0001\u0000\u0000\u0000\u1703\u1706\u0001\u0000\u0000\u0000\u1704"+
57910 		"\u1702\u0001\u0000\u0000\u0000\u1704\u1705\u0001\u0000\u0000\u0000\u1705"+
57911 		"\u0339\u0001\u0000\u0000\u0000\u1706\u1704\u0001\u0000\u0000\u0000\u1707"+
57912 		"\u1708\u0003\u038e\u01c7\u0000\u1708\u1709\u0005\u000e\u0000\u0000\u1709"+
57913 		"\u170a\u0005\u000e\u0000\u0000\u170a\u170c\u0001\u0000\u0000\u0000\u170b"+
57914 		"\u1707\u0001\u0000\u0000\u0000\u170b\u170c\u0001\u0000\u0000\u0000\u170c"+
57915 		"\u170d\u0001\u0000\u0000\u0000\u170d\u170e\u0003\u033c\u019e\u0000\u170e"+
57916 		"\u033b\u0001\u0000\u0000\u0000\u170f\u1710\u0003L&\u0000\u1710\u1711\u0005"+
57917 		"\u0014\u0000\u0000\u1711\u1713\u0001\u0000\u0000\u0000\u1712\u170f\u0001"+
57918 		"\u0000\u0000\u0000\u1712\u1713\u0001\u0000\u0000\u0000\u1713\u1714\u0001"+
57919 		"\u0000\u0000\u0000\u1714\u1715\u0003N\'\u0000\u1715\u033d\u0001\u0000"+
57920 		"\u0000\u0000\u1716\u1717\u0003\u03ac\u01d6\u0000\u1717\u033f\u0001\u0000"+
57921 		"\u0000\u0000\u1718\u171e\u00058\u0000\u0000\u1719\u171b\u0003\u034c\u01a6"+
57922 		"\u0000\u171a\u1719\u0001\u0000\u0000\u0000\u171a\u171b\u0001\u0000\u0000"+
57923 		"\u0000\u171b\u171c\u0001\u0000\u0000\u0000\u171c\u171f\u0003\u0342\u01a1"+
57924 		"\u0000\u171d\u171f\u0003\u0344\u01a2\u0000\u171e\u171a\u0001\u0000\u0000"+
57925 		"\u0000\u171e\u171d\u0001\u0000\u0000\u0000\u171f\u0341\u0001\u0000\u0000"+
57926 		"\u0000\u1720\u1723\u0003\u0334\u019a\u0000\u1721\u1722\u0005a\u0000\u0000"+
57927 		"\u1722\u1724\u0003\u0336\u019b\u0000\u1723\u1721\u0001\u0000\u0000\u0000"+
57928 		"\u1723\u1724\u0001\u0000\u0000\u0000\u1724\u1725\u0001\u0000\u0000\u0000"+
57929 		"\u1725\u1726\u0007Z\u0000\u0000\u1726\u172b\u0003\u033e\u019f\u0000\u1727"+
57930 		"\u1728\u0005%\u0000\u0000\u1728\u172a\u0003\u033e\u019f\u0000\u1729\u1727"+
57931 		"\u0001\u0000\u0000\u0000\u172a\u172d\u0001\u0000\u0000\u0000\u172b\u1729"+
57932 		"\u0001\u0000\u0000\u0000\u172b\u172c\u0001\u0000\u0000\u0000\u172c\u172f"+
57933 		"\u0001\u0000\u0000\u0000\u172d\u172b\u0001\u0000\u0000\u0000\u172e\u1730"+
57934 		"\u0005\u00fd\u0000\u0000\u172f\u172e\u0001\u0000\u0000\u0000\u172f\u1730"+
57935 		"\u0001\u0000\u0000\u0000\u1730\u1733\u0001\u0000\u0000\u0000\u1731\u1732"+
57936 		"\u0005`\u0000\u0000\u1732\u1734\u0003\u033e\u019f\u0000\u1733\u1731\u0001"+
57937 		"\u0000\u0000\u0000\u1733\u1734\u0001\u0000\u0000\u0000\u1734\u0343\u0001"+
57938 		"\u0000\u0000\u0000\u1735\u1738\u0003\u0338\u019c\u0000\u1736\u1737\u0005"+
57939 		"a\u0000\u0000\u1737\u1739\u0003\u033a\u019d\u0000\u1738\u1736\u0001\u0000"+
57940 		"\u0000\u0000\u1738\u1739\u0001\u0000\u0000\u0000\u1739\u173a\u0001\u0000"+
57941 		"\u0000\u0000\u173a\u173b\u0007Z\u0000\u0000\u173b\u1740\u0003\u033e\u019f"+
57942 		"\u0000\u173c\u173d\u0005%\u0000\u0000\u173d\u173f\u0003\u033e\u019f\u0000"+
57943 		"\u173e\u173c\u0001\u0000\u0000\u0000\u173f\u1742\u0001\u0000\u0000\u0000"+
57944 		"\u1740\u173e\u0001\u0000\u0000\u0000\u1740\u1741\u0001\u0000\u0000\u0000"+
57945 		"\u1741\u1744\u0001\u0000\u0000\u0000\u1742\u1740\u0001\u0000\u0000\u0000"+
57946 		"\u1743\u1745\u0005\u00fd\u0000\u0000\u1744\u1743\u0001\u0000\u0000\u0000"+
57947 		"\u1744\u1745\u0001\u0000\u0000\u0000\u1745\u0345\u0001\u0000\u0000\u0000"+
57948 		"\u1746\u1749\u0005\u0117\u0000\u0000\u1747\u174a\u0003\u0348\u01a4\u0000"+
57949 		"\u1748\u174a\u0003\u034a\u01a5\u0000\u1749\u1747\u0001\u0000\u0000\u0000"+
57950 		"\u1749\u1748\u0001\u0000\u0000\u0000\u174a\u0347\u0001\u0000\u0000\u0000"+
57951 		"\u174b\u174e\u0003\u0334\u019a\u0000\u174c\u174d\u0005a\u0000\u0000\u174d"+
57952 		"\u174f\u0003\u0336\u019b\u0000\u174e\u174c\u0001\u0000\u0000\u0000\u174e"+
57953 		"\u174f\u0001\u0000\u0000\u0000\u174f\u1750\u0001\u0000\u0000\u0000\u1750"+
57954 		"\u1751\u0005g\u0000\u0000\u1751\u1756\u0003\u033e\u019f\u0000\u1752\u1753"+
57955 		"\u0005%\u0000\u0000\u1753\u1755\u0003\u033e\u019f\u0000\u1754\u1752\u0001"+
57956 		"\u0000\u0000\u0000\u1755\u1758\u0001\u0000\u0000\u0000\u1756\u1754\u0001"+
57957 		"\u0000\u0000\u0000\u1756\u1757\u0001\u0000\u0000\u0000\u1757\u175a\u0001"+
57958 		"\u0000\u0000\u0000\u1758\u1756\u0001\u0000\u0000\u0000\u1759\u175b\u0005"+
57959 		"\u00fd\u0000\u0000\u175a\u1759\u0001\u0000\u0000\u0000\u175a\u175b\u0001"+
57960 		"\u0000\u0000\u0000\u175b\u175e\u0001\u0000\u0000\u0000\u175c\u175d\u0005"+
57961 		"`\u0000\u0000\u175d\u175f\u0003\u033e\u019f\u0000\u175e\u175c\u0001\u0000"+
57962 		"\u0000\u0000\u175e\u175f\u0001\u0000\u0000\u0000\u175f\u0349\u0001\u0000"+
57963 		"\u0000\u0000\u1760\u1763\u0003\u0338\u019c\u0000\u1761\u1762\u0005a\u0000"+
57964 		"\u0000\u1762\u1764\u0003\u033a\u019d\u0000\u1763\u1761\u0001\u0000\u0000"+
57965 		"\u0000\u1763\u1764\u0001\u0000\u0000\u0000\u1764\u1765\u0001\u0000\u0000"+
57966 		"\u0000\u1765\u1766\u0005g\u0000\u0000\u1766\u176b\u0003\u033e\u019f\u0000"+
57967 		"\u1767\u1768\u0005%\u0000\u0000\u1768\u176a\u0003\u033e\u019f\u0000\u1769"+
57968 		"\u1767\u0001\u0000\u0000\u0000\u176a\u176d\u0001\u0000\u0000\u0000\u176b"+
57969 		"\u1769\u0001\u0000\u0000\u0000\u176b\u176c\u0001\u0000\u0000\u0000\u176c"+
57970 		"\u176f\u0001\u0000\u0000\u0000\u176d\u176b\u0001\u0000\u0000\u0000\u176e"+
57971 		"\u1770\u0005\u00fd\u0000\u0000\u176f\u176e\u0001\u0000\u0000\u0000\u176f"+
57972 		"\u1770\u0001\u0000\u0000\u0000\u1770\u034b\u0001\u0000\u0000\u0000\u1771"+
57973 		"\u1772\u00057\u0000\u0000\u1772\u1773\u0005\u0101\u0000\u0000\u1773\u1774"+
57974 		"\u0005f\u0000\u0000\u1774\u034d\u0001\u0000\u0000\u0000\u1775\u1777\u0005"+
57975 		"r\u0000\u0000\u1776\u1778\u0005\u0102\u0000\u0000\u1777\u1776\u0001\u0000"+
57976 		"\u0000\u0000\u1777\u1778\u0001\u0000\u0000\u0000\u1778\u178d\u0001\u0000"+
57977 		"\u0000\u0000\u1779\u178d\u0003\u037a\u01bd\u0000\u177a\u178d\u0003\u0378"+
57978 		"\u01bc\u0000\u177b\u178d\u0003\u037c\u01be\u0000\u177c\u178d\u0003\u0374"+
57979 		"\u01ba\u0000\u177d\u178d\u0003\u0350\u01a8\u0000\u177e\u178d\u0003\u0388"+
57980 		"\u01c4\u0000\u177f\u178d\u0003\u0356\u01ab\u0000\u1780\u178d\u0003\u0358"+
57981 		"\u01ac\u0000\u1781\u178d\u0003\u0360\u01b0\u0000\u1782\u178d\u0003\u0372"+
57982 		"\u01b9\u0000\u1783\u178d\u0003\u037e\u01bf\u0000\u1784\u178d\u0003\u0362"+
57983 		"\u01b1\u0000\u1785\u178d\u0003\u0364\u01b2\u0000\u1786\u178d\u0003\u0352"+
57984 		"\u01a9\u0000\u1787\u178d\u0003\u0354\u01aa\u0000\u1788\u178d\u0003\u0366"+
57985 		"\u01b3\u0000\u1789\u178d\u0003\u0376\u01bb\u0000\u178a\u178d\u0003\u0384"+
57986 		"\u01c2\u0000\u178b\u178d\u0003\u0386\u01c3\u0000\u178c\u1775\u0001\u0000"+
57987 		"\u0000\u0000\u178c\u1779\u0001\u0000\u0000\u0000\u178c\u177a\u0001\u0000"+
57988 		"\u0000\u0000\u178c\u177b\u0001\u0000\u0000\u0000\u178c\u177c\u0001\u0000"+
57989 		"\u0000\u0000\u178c\u177d\u0001\u0000\u0000\u0000\u178c\u177e\u0001\u0000"+
57990 		"\u0000\u0000\u178c\u177f\u0001\u0000\u0000\u0000\u178c\u1780\u0001\u0000"+
57991 		"\u0000\u0000\u178c\u1781\u0001\u0000\u0000\u0000\u178c\u1782\u0001\u0000"+
57992 		"\u0000\u0000\u178c\u1783\u0001\u0000\u0000\u0000\u178c\u1784\u0001\u0000"+
57993 		"\u0000\u0000\u178c\u1785\u0001\u0000\u0000\u0000\u178c\u1786\u0001\u0000"+
57994 		"\u0000\u0000\u178c\u1787\u0001\u0000\u0000\u0000\u178c\u1788\u0001\u0000"+
57995 		"\u0000\u0000\u178c\u1789\u0001\u0000\u0000\u0000\u178c\u178a\u0001\u0000"+
57996 		"\u0000\u0000\u178c\u178b\u0001\u0000\u0000\u0000\u178d\u034f\u0001\u0000"+
57997 		"\u0000\u0000\u178e\u179f\u00053\u0000\u0000\u178f\u179f\u0005\u014b\u0000"+
57998 		"\u0000\u1790\u179f\u00051\u0000\u0000\u1791\u179f\u0005\u0145\u0000\u0000"+
57999 		"\u1792\u179f\u0005/\u0000\u0000\u1793\u179f\u0005\u0155\u0000\u0000\u1794"+
58000 		"\u179f\u0005\u0103\u0000\u0000\u1795\u179f\u0005.\u0000\u0000\u1796\u1797"+
58001 		"\u0005\u014d\u0000\u0000\u1797\u179f\u0005\u014e\u0000\u0000\u1798\u179f"+
58002 		"\u00050\u0000\u0000\u1799\u179a\u0005J\u0000\u0000\u179a\u179b\u0005\u0156"+
58003 		"\u0000\u0000\u179b\u179f\u0005\u0158\u0000\u0000\u179c\u179d\u0005J\u0000"+
58004 		"\u0000\u179d\u179f\u0005\u014f\u0000\u0000\u179e\u178e\u0001\u0000\u0000"+
58005 		"\u0000\u179e\u178f\u0001\u0000\u0000\u0000\u179e\u1790\u0001\u0000\u0000"+
58006 		"\u0000\u179e\u1791\u0001\u0000\u0000\u0000\u179e\u1792\u0001\u0000\u0000"+
58007 		"\u0000\u179e\u1793\u0001\u0000\u0000\u0000\u179e\u1794\u0001\u0000\u0000"+
58008 		"\u0000\u179e\u1795\u0001\u0000\u0000\u0000\u179e\u1796\u0001\u0000\u0000"+
58009 		"\u0000\u179e\u1798\u0001\u0000\u0000\u0000\u179e\u1799\u0001\u0000\u0000"+
58010 		"\u0000\u179e\u179c\u0001\u0000\u0000\u0000\u179f\u0351\u0001\u0000\u0000"+
58011 		"\u0000\u17a0\u17a1\u0005\u016a\u0000\u0000\u17a1\u17a2\u0005\u016b\u0000"+
58012 		"\u0000\u17a2\u17ee\u0005\u016c\u0000\u0000\u17a3\u17a9\u00053\u0000\u0000"+
58013 		"\u17a4\u17aa\u0005\u0159\u0000\u0000\u17a5\u17aa\u0005\u015a\u0000\u0000"+
58014 		"\u17a6\u17aa\u0005\u0157\u0000\u0000\u17a7\u17a8\u0005\u0154\u0000\u0000"+
58015 		"\u17a8\u17aa\u0005\u015b\u0000\u0000\u17a9\u17a4\u0001\u0000\u0000\u0000"+
58016 		"\u17a9\u17a5\u0001\u0000\u0000\u0000\u17a9\u17a6\u0001\u0000\u0000\u0000"+
58017 		"\u17a9\u17a7\u0001\u0000\u0000\u0000\u17aa\u17ee\u0001\u0000\u0000\u0000"+
58018 		"\u17ab\u17ac\u00053\u0000\u0000\u17ac\u17be\u0005s\u0000\u0000\u17ad\u17ae"+
58019 		"\u0005\u015c\u0000\u0000\u17ae\u17bf\u0005v\u0000\u0000\u17af\u17bf\u0005"+
58020 		"\u0149\u0000\u0000\u17b0\u17bf\u0005\u015d\u0000\u0000\u17b1\u17bf\u0005"+
58021 		"\u00cc\u0000\u0000\u17b2\u17bf\u0005\u015e\u0000\u0000\u17b3\u17b4\u0005"+
58022 		"\u015f\u0000\u0000\u17b4\u17bf\u0005\u0160\u0000\u0000\u17b5\u17b6\u0005"+
58023 		"\u015f\u0000\u0000\u17b6\u17bf\u0005\u0147\u0000\u0000\u17b7\u17b8\u0005"+
58024 		"\u0161\u0000\u0000\u17b8\u17bf\u0005\u0154\u0000\u0000\u17b9\u17bf\u0005"+
58025 		"\u0129\u0000\u0000\u17ba\u17bb\u0005\u0154\u0000\u0000\u17bb\u17bf\u0005"+
58026 		"\u0162\u0000\u0000\u17bc\u17bd\u0005\u0154\u0000\u0000\u17bd\u17bf\u0005"+
58027 		"\u0105\u0000\u0000\u17be\u17ad\u0001\u0000\u0000\u0000\u17be\u17af\u0001"+
58028 		"\u0000\u0000\u0000\u17be\u17b0\u0001\u0000\u0000\u0000\u17be\u17b1\u0001"+
58029 		"\u0000\u0000\u0000\u17be\u17b2\u0001\u0000\u0000\u0000\u17be\u17b3\u0001"+
58030 		"\u0000\u0000\u0000\u17be\u17b5\u0001\u0000\u0000\u0000\u17be\u17b7\u0001"+
58031 		"\u0000\u0000\u0000\u17be\u17b9\u0001\u0000\u0000\u0000\u17be\u17ba\u0001"+
58032 		"\u0000\u0000\u0000\u17be\u17bc\u0001\u0000\u0000\u0000\u17bf\u17ee\u0001"+
58033 		"\u0000\u0000\u0000\u17c0\u17c1\u0005\u0167\u0000\u0000\u17c1\u17ee\u0005"+
58034 		"\u0154\u0000\u0000\u17c2\u17c3\u0005\u0148\u0000\u0000\u17c3\u17c4\u0005"+
58035 		"s\u0000\u0000\u17c4\u17ee\u0005\u00cc\u0000\u0000\u17c5\u17c6\u0005\u0148"+
58036 		"\u0000\u0000\u17c6\u17ee\u0005\u00a4\u0000\u0000\u17c7\u17c8\u0005\u014b"+
58037 		"\u0000\u0000\u17c8\u17ee\u0005\u0154\u0000\u0000\u17c9\u17ca\u00052\u0000"+
58038 		"\u0000\u17ca\u17cb\u0005s\u0000\u0000\u17cb\u17ee\u0005\u00cc\u0000\u0000"+
58039 		"\u17cc\u17d8\u00052\u0000\u0000\u17cd\u17ce\u0005\u015c\u0000\u0000\u17ce"+
58040 		"\u17d9\u0005v\u0000\u0000\u17cf\u17d0\u0005\u0163\u0000\u0000\u17d0\u17d1"+
58041 		"\u0005\u015f\u0000\u0000\u17d1\u17d9\u0005\u0160\u0000\u0000\u17d2\u17d9"+
58042 		"\u0005\u015e\u0000\u0000\u17d3\u17d4\u0005\u0154\u0000\u0000\u17d4\u17d9"+
58043 		"\u0005\u0105\u0000\u0000\u17d5\u17d6\u0005\u0157\u0000\u0000\u17d6\u17d7"+
58044 		"\u0005\u015f\u0000\u0000\u17d7\u17d9\u0005\u0160\u0000\u0000\u17d8\u17cd"+
58045 		"\u0001\u0000\u0000\u0000\u17d8\u17cf\u0001\u0000\u0000\u0000\u17d8\u17d2"+
58046 		"\u0001\u0000\u0000\u0000\u17d8\u17d3\u0001\u0000\u0000\u0000\u17d8\u17d5"+
58047 		"\u0001\u0000\u0000\u0000\u17d9\u17ee\u0001\u0000\u0000\u0000\u17da\u17db"+
58048 		"\u0005\u0168\u0000\u0000\u17db\u17dc\u0005\u0169\u0000\u0000\u17dc\u17ee"+
58049 		"\u0005\u0151\u0000\u0000\u17dd\u17de\u0005\u0165\u0000\u0000\u17de\u17df"+
58050 		"\u0005s\u0000\u0000\u17df\u17ee\u0005\u0129\u0000\u0000\u17e0\u17e1\u0005"+
58051 		".\u0000\u0000\u17e1\u17e2\u0005r\u0000\u0000\u17e2\u17e3\u0005\u0104\u0000"+
58052 		"\u0000\u17e3\u17ee\u0005\u0166\u0000\u0000\u17e4\u17ee\u0005\u016e\u0000"+
58053 		"\u0000\u17e5\u17e6\u0005\u016d\u0000\u0000\u17e6\u17ee\u0005\u0151\u0000"+
58054 		"\u0000\u17e7\u17e8\u0005J\u0000\u0000\u17e8\u17e9\u0005s\u0000\u0000\u17e9"+
58055 		"\u17ee\u0007[\u0000\u0000\u17ea\u17eb\u0005J\u0000\u0000\u17eb\u17ec\u0005"+
58056 		"\u0154\u0000\u0000\u17ec\u17ee\u0005\u015b\u0000\u0000\u17ed\u17a0\u0001"+
58057 		"\u0000\u0000\u0000\u17ed\u17a3\u0001\u0000\u0000\u0000\u17ed\u17ab\u0001"+
58058 		"\u0000\u0000\u0000\u17ed\u17c0\u0001\u0000\u0000\u0000\u17ed\u17c2\u0001"+
58059 		"\u0000\u0000\u0000\u17ed\u17c5\u0001\u0000\u0000\u0000\u17ed\u17c7\u0001"+
58060 		"\u0000\u0000\u0000\u17ed\u17c9\u0001\u0000\u0000\u0000\u17ed\u17cc\u0001"+
58061 		"\u0000\u0000\u0000\u17ed\u17da\u0001\u0000\u0000\u0000\u17ed\u17dd\u0001"+
58062 		"\u0000\u0000\u0000\u17ed\u17e0\u0001\u0000\u0000\u0000\u17ed\u17e4\u0001"+
58063 		"\u0000\u0000\u0000\u17ed\u17e5\u0001\u0000\u0000\u0000\u17ed\u17e7\u0001"+
58064 		"\u0000\u0000\u0000\u17ed\u17ea\u0001\u0000\u0000\u0000\u17ee\u0353\u0001"+
58065 		"\u0000\u0000\u0000\u17ef\u17f1\u0005\u014b\u0000\u0000\u17f0\u17f2\u0005"+
58066 		"\u0154\u0000\u0000\u17f1\u17f0\u0001\u0000\u0000\u0000\u17f1\u17f2\u0001"+
58067 		"\u0000\u0000\u0000\u17f2\u1802\u0001\u0000\u0000\u0000\u17f3\u1802\u0005"+
58068 		"\u0165\u0000\u0000\u17f4\u17f6\u0005J\u0000\u0000\u17f5\u17f7\u0005s\u0000"+
58069 		"\u0000\u17f6\u17f5\u0001\u0000\u0000\u0000\u17f6\u17f7\u0001\u0000\u0000"+
58070 		"\u0000\u17f7\u17f8\u0001\u0000\u0000\u0000\u17f8\u1802\u0005\u014f\u0000"+
58071 		"\u0000\u17f9\u1802\u00053\u0000\u0000\u17fa\u17fb\u00053\u0000\u0000\u17fb"+
58072 		"\u17ff\u0005s\u0000\u0000\u17fc\u1800\u0005\u0129\u0000\u0000\u17fd\u17fe"+
58073 		"\u0005\u0154\u0000\u0000\u17fe\u1800\u0005\u0105\u0000\u0000\u17ff\u17fc"+
58074 		"\u0001\u0000\u0000\u0000\u17ff\u17fd\u0001\u0000\u0000\u0000\u1800\u1802"+
58075 		"\u0001\u0000\u0000\u0000\u1801\u17ef\u0001\u0000\u0000\u0000\u1801\u17f3"+
58076 		"\u0001\u0000\u0000\u0000\u1801\u17f4\u0001\u0000\u0000\u0000\u1801\u17f9"+
58077 		"\u0001\u0000\u0000\u0000\u1801\u17fa\u0001\u0000\u0000\u0000\u1802\u0355"+
58078 		"\u0001\u0000\u0000\u0000\u1803\u1804\u0005\u016a\u0000\u0000\u1804\u1805"+
58079 		"\u0005\u00cc\u0000\u0000\u1805\u1806\u0005\u016b\u0000\u0000\u1806\u18ab"+
58080 		"\u0005\u016c\u0000\u0000\u1807\u18ab\u00053\u0000\u0000\u1808\u1809\u0005"+
58081 		"3\u0000\u0000\u1809\u18ab\u0005\u0157\u0000\u0000\u180a\u180b\u00053\u0000"+
58082 		"\u0000\u180b\u1845\u0005s\u0000\u0000\u180c\u180d\u0005\u0150\u0000\u0000"+
58083 		"\u180d\u1846\u0005\u0105\u0000\u0000\u180e\u1846\u0005\u0151\u0000\u0000"+
58084 		"\u180f\u1814\u0005\u0152\u0000\u0000\u1810\u1814\u0005\u0153\u0000\u0000"+
58085 		"\u1811\u1812\u0005<\u0000\u0000\u1812\u1814\u0005\u0175\u0000\u0000\u1813"+
58086 		"\u180f\u0001\u0000\u0000\u0000\u1813\u1810\u0001\u0000\u0000\u0000\u1813"+
58087 		"\u1811\u0001\u0000\u0000\u0000\u1814\u1815\u0001\u0000\u0000\u0000\u1815"+
58088 		"\u1846\u0005C\u0000\u0000\u1816\u1846\u0005\u0173\u0000\u0000\u1817\u1846"+
58089 		"\u0005\u0149\u0000\u0000\u1818\u1819\u0005<\u0000\u0000\u1819\u181a\u0005"+
58090 		"\u0176\u0000\u0000\u181a\u181b\u0005C\u0000\u0000\u181b\u1846\u0005\u014f"+
58091 		"\u0000\u0000\u181c\u1846\u0005\u0174\u0000\u0000\u181d\u1827\u0005\u00cc"+
58092 		"\u0000\u0000\u181e\u1828\u0005\u0162\u0000\u0000\u181f\u1820\u0005\u0163"+
58093 		"\u0000\u0000\u1820\u1828\u0005G\u0000\u0000\u1821\u1822\u0005\u015f\u0000"+
58094 		"\u0000\u1822\u1828\u0005\u0160\u0000\u0000\u1823\u1824\u0005\u015f\u0000"+
58095 		"\u0000\u1824\u1828\u0005\u0147\u0000\u0000\u1825\u1826\u0005\u016f\u0000"+
58096 		"\u0000\u1826\u1828\u0005\u0170\u0000\u0000\u1827\u181e\u0001\u0000\u0000"+
58097 		"\u0000\u1827\u181f\u0001\u0000\u0000\u0000\u1827\u1821\u0001\u0000\u0000"+
58098 		"\u0000\u1827\u1823\u0001\u0000\u0000\u0000\u1827\u1825\u0001\u0000\u0000"+
58099 		"\u0000\u1827\u1828\u0001\u0000\u0000\u0000\u1828\u1846\u0001\u0000\u0000"+
58100 		"\u0000\u1829\u1846\u0005\u0171\u0000\u0000\u182a\u182b\u0005\u015f\u0000"+
58101 		"\u0000\u182b\u1846\u0007\\\u0000\u0000\u182c\u1832\u0005\u0168\u0000\u0000"+
58102 		"\u182d\u182e\u0005\u0177\u0000\u0000\u182e\u1833\u0005\u0178\u0000\u0000"+
58103 		"\u182f\u1830\u0005\u0179\u0000\u0000\u1830\u1833\u0005\u017a\u0000\u0000"+
58104 		"\u1831\u1833\u0005\u017b\u0000\u0000\u1832\u182d\u0001\u0000\u0000\u0000"+
58105 		"\u1832\u182f\u0001\u0000\u0000\u0000\u1832\u1831\u0001\u0000\u0000\u0000"+
58106 		"\u1833\u1846\u0001\u0000\u0000\u0000\u1834\u1835\u0005\u017c\u0000\u0000"+
58107 		"\u1835\u1846\u0005\u014a\u0000\u0000\u1836\u1846\u0005\u017d\u0000\u0000"+
58108 		"\u1837\u1838\u0005\u017f\u0000\u0000\u1838\u1846\u0005\u00b0\u0000\u0000"+
58109 		"\u1839\u183a\u0005\u0180\u0000\u0000\u183a\u183b\u0005\u0172\u0000\u0000"+
58110 		"\u183b\u1846\u0005\u0181\u0000\u0000\u183c\u1846\u0005\u0105\u0000\u0000"+
58111 		"\u183d\u1846\u0005\u0182\u0000\u0000\u183e\u183f\u0005\u0154\u0000\u0000"+
58112 		"\u183f\u1846\u0005\u0162\u0000\u0000\u1840\u1846\u00056\u0000\u0000\u1841"+
58113 		"\u1842\u0005\u0183\u0000\u0000\u1842\u1846\u0005\u0184\u0000\u0000\u1843"+
58114 		"\u1846\u0005\u0172\u0000\u0000\u1844\u1846\u0005\u0104\u0000\u0000\u1845"+
58115 		"\u180c\u0001\u0000\u0000\u0000\u1845\u180e\u0001\u0000\u0000\u0000\u1845"+
58116 		"\u1813\u0001\u0000\u0000\u0000\u1845\u1816\u0001\u0000\u0000\u0000\u1845"+
58117 		"\u1817\u0001\u0000\u0000\u0000\u1845\u1818\u0001\u0000\u0000\u0000\u1845"+
58118 		"\u181c\u0001\u0000\u0000\u0000\u1845\u181d\u0001\u0000\u0000\u0000\u1845"+
58119 		"\u1829\u0001\u0000\u0000\u0000\u1845\u182a\u0001\u0000\u0000\u0000\u1845"+
58120 		"\u182c\u0001\u0000\u0000\u0000\u1845\u1834\u0001\u0000\u0000\u0000\u1845"+
58121 		"\u1836\u0001\u0000\u0000\u0000\u1845\u1837\u0001\u0000\u0000\u0000\u1845"+
58122 		"\u1839\u0001\u0000\u0000\u0000\u1845\u183c\u0001\u0000\u0000\u0000\u1845"+
58123 		"\u183d\u0001\u0000\u0000\u0000\u1845\u183e\u0001\u0000\u0000\u0000\u1845"+
58124 		"\u1840\u0001\u0000\u0000\u0000\u1845\u1841\u0001\u0000\u0000\u0000\u1845"+
58125 		"\u1843\u0001\u0000\u0000\u0000\u1845\u1844\u0001\u0000\u0000\u0000\u1846"+
58126 		"\u18ab\u0001\u0000\u0000\u0000\u1847\u1849\u0005\u0167\u0000\u0000\u1848"+
58127 		"\u184a\u0005\u0154\u0000\u0000\u1849\u1848\u0001\u0000\u0000\u0000\u1849"+
58128 		"\u184a\u0001\u0000\u0000\u0000\u184a\u18ab\u0001\u0000\u0000\u0000\u184b"+
58129 		"\u184c\u0005\u018c\u0000\u0000\u184c\u18ab\u0007]\u0000\u0000\u184d\u18ab"+
58130 		"\u0005\u0192\u0000\u0000\u184e\u18ab\u0005\u0148\u0000\u0000\u184f\u1851"+
58131 		"\u0005\u0148\u0000\u0000\u1850\u1852\u0005\u013b\u0000\u0000\u1851\u1850"+
58132 		"\u0001\u0000\u0000\u0000\u1851\u1852\u0001\u0000\u0000\u0000\u1852\u18ab"+
58133 		"\u0001\u0000\u0000\u0000\u1853\u1855\u0005\u014b\u0000\u0000\u1854\u1856"+
58134 		"\u0005\u0154\u0000\u0000\u1855\u1854\u0001\u0000\u0000\u0000\u1855\u1856"+
58135 		"\u0001\u0000\u0000\u0000\u1856\u18ab\u0001\u0000\u0000\u0000\u1857\u187c"+
58136 		"\u00052\u0000\u0000\u1858\u187d\u0005\u0185\u0000\u0000\u1859\u187d\u0005"+
58137 		"\u0151\u0000\u0000\u185a\u185b\u0007^\u0000\u0000\u185b\u187d\u0005C\u0000"+
58138 		"\u0000\u185c\u187d\u0005\u0173\u0000\u0000\u185d\u187d\u0005\u0174\u0000"+
58139 		"\u0000\u185e\u187d\u0005\u00cc\u0000\u0000\u185f\u1861\u0005\u00cc\u0000"+
58140 		"\u0000\u1860\u185f\u0001\u0000\u0000\u0000\u1860\u1861\u0001\u0000\u0000"+
58141 		"\u0000\u1861\u1862\u0001\u0000\u0000\u0000\u1862\u1863\u0005\u0163\u0000"+
58142 		"\u0000\u1863\u1864\u0005\u015f\u0000\u0000\u1864\u187d\u0005\u0160\u0000"+
58143 		"\u0000\u1865\u187d\u0005\u009a\u0000\u0000\u1866\u1867\u0005\u017c\u0000"+
58144 		"\u0000\u1867\u187d\u0005\u014a\u0000\u0000\u1868\u187d\u0005F\u0000\u0000"+
58145 		"\u1869\u186a\u0005\u017f\u0000\u0000\u186a\u187d\u0005\u00b0\u0000\u0000"+
58146 		"\u186b\u187d\u0005H\u0000\u0000\u186c\u187d\u0005\u0186\u0000\u0000\u186d"+
58147 		"\u186e\u0005\u0180\u0000\u0000\u186e\u186f\u0005\u0172\u0000\u0000\u186f"+
58148 		"\u187d\u0005\u0181\u0000\u0000\u1870\u187d\u0005\u0105\u0000\u0000\u1871"+
58149 		"\u187d\u0005\u0182\u0000\u0000\u1872\u187d\u0005\u0187\u0000\u0000\u1873"+
58150 		"\u187d\u00056\u0000\u0000\u1874\u187d\u0005\u0172\u0000\u0000\u1875\u187d"+
58151 		"\u0005\u0188\u0000\u0000\u1876\u187d\u0005;\u0000\u0000\u1877\u187d\u0005"+
58152 		"\u00b0\u0000\u0000\u1878\u187d\u0005J\u0000\u0000\u1879\u187a\u0005\u0164"+
58153 		"\u0000\u0000\u187a\u187b\u00056\u0000\u0000\u187b\u187d\u0005\u0189\u0000"+
58154 		"\u0000\u187c\u1858\u0001\u0000\u0000\u0000\u187c\u1859\u0001\u0000\u0000"+
58155 		"\u0000\u187c\u185a\u0001\u0000\u0000\u0000\u187c\u185c\u0001\u0000\u0000"+
58156 		"\u0000\u187c\u185d\u0001\u0000\u0000\u0000\u187c\u185e\u0001\u0000\u0000"+
58157 		"\u0000\u187c\u1860\u0001\u0000\u0000\u0000\u187c\u1865\u0001\u0000\u0000"+
58158 		"\u0000\u187c\u1866\u0001\u0000\u0000\u0000\u187c\u1868\u0001\u0000\u0000"+
58159 		"\u0000\u187c\u1869\u0001\u0000\u0000\u0000\u187c\u186b\u0001\u0000\u0000"+
58160 		"\u0000\u187c\u186c\u0001\u0000\u0000\u0000\u187c\u186d\u0001\u0000\u0000"+
58161 		"\u0000\u187c\u1870\u0001\u0000\u0000\u0000\u187c\u1871\u0001\u0000\u0000"+
58162 		"\u0000\u187c\u1872\u0001\u0000\u0000\u0000\u187c\u1873\u0001\u0000\u0000"+
58163 		"\u0000\u187c\u1874\u0001\u0000\u0000\u0000\u187c\u1875\u0001\u0000\u0000"+
58164 		"\u0000\u187c\u1876\u0001\u0000\u0000\u0000\u187c\u1877\u0001\u0000\u0000"+
58165 		"\u0000\u187c\u1878\u0001\u0000\u0000\u0000\u187c\u1879\u0001\u0000\u0000"+
58166 		"\u0000\u187d\u18ab\u0001\u0000\u0000\u0000\u187e\u18ab\u00051\u0000\u0000"+
58167 		"\u187f\u18ab\u0005\u0145\u0000\u0000\u1880\u1882\u0005\u0145\u0000\u0000"+
58168 		"\u1881\u1883\u0005s\u0000\u0000\u1882\u1881\u0001\u0000\u0000\u0000\u1882"+
58169 		"\u1883\u0001\u0000\u0000\u0000\u1883\u1884\u0001\u0000\u0000\u0000\u1884"+
58170 		"\u1885\u0005\u0168\u0000\u0000\u1885\u18ab\u0005\u018a\u0000\u0000\u1886"+
58171 		"\u18ab\u0005/\u0000\u0000\u1887\u1888\u0005\u018b\u0000\u0000\u1888\u1889"+
58172 		"\u0005\u00cc\u0000\u0000\u1889\u18ab\u0005\u0149\u0000\u0000\u188a\u18ab"+
58173 		"\u0005\u0103\u0000\u0000\u188b\u18ab\u0005.\u0000\u0000\u188c\u18ab\u0005"+
58174 		"\u018e\u0000\u0000\u188d\u188e\u0005\u018f\u0000\u0000\u188e\u188f\u0005"+
58175 		"\u0190\u0000\u0000\u188f\u18ab\u0005\u0191\u0000\u0000\u1890\u1891\u0005"+
58176 		"\u014d\u0000\u0000\u1891\u18ab\u0005\u014e\u0000\u0000\u1892\u18ab\u0005"+
58177 		"\u017e\u0000\u0000\u1893\u18ab\u00050\u0000\u0000\u1894\u1895\u0005J\u0000"+
58178 		"\u0000\u1895\u1896\u0005s\u0000\u0000\u1896\u1897\u0005<\u0000\u0000\u1897"+
58179 		"\u1898\u0007_\u0000\u0000\u1898\u1899\u0005C\u0000\u0000\u1899\u18ab\u0005"+
58180 		"\u014f\u0000\u0000\u189a\u189b\u00052\u0000\u0000\u189b\u189f\u0005s\u0000"+
58181 		"\u0000\u189c\u18a0\u0005\u00cc\u0000\u0000\u189d\u189e\u0005\u0168\u0000"+
58182 		"\u0000\u189e\u18a0\u0005\u017b\u0000\u0000\u189f\u189c\u0001\u0000\u0000"+
58183 		"\u0000\u189f\u189d\u0001\u0000\u0000\u0000\u18a0\u18ab\u0001\u0000\u0000"+
58184 		"\u0000\u18a1\u18a2\u0005J\u0000\u0000\u18a2\u18a3\u0007`\u0000\u0000\u18a3"+
58185 		"\u18ab\u0005\u015b\u0000\u0000\u18a4\u18a6\u0005J\u0000\u0000\u18a5\u18a7"+
58186 		"\u0005s\u0000\u0000\u18a6\u18a5\u0001\u0000\u0000\u0000\u18a6\u18a7\u0001"+
58187 		"\u0000\u0000\u0000\u18a7\u18a8\u0001\u0000\u0000\u0000\u18a8\u18ab\u0005"+
58188 		"\u014f\u0000\u0000\u18a9\u18ab\u0001\u0000\u0000\u0000\u18aa\u1803\u0001"+
58189 		"\u0000\u0000\u0000\u18aa\u1807\u0001\u0000\u0000\u0000\u18aa\u1808\u0001"+
58190 		"\u0000\u0000\u0000\u18aa\u180a\u0001\u0000\u0000\u0000\u18aa\u1847\u0001"+
58191 		"\u0000\u0000\u0000\u18aa\u184b\u0001\u0000\u0000\u0000\u18aa\u184d\u0001"+
58192 		"\u0000\u0000\u0000\u18aa\u184e\u0001\u0000\u0000\u0000\u18aa\u184f\u0001"+
58193 		"\u0000\u0000\u0000\u18aa\u1853\u0001\u0000\u0000\u0000\u18aa\u1857\u0001"+
58194 		"\u0000\u0000\u0000\u18aa\u187e\u0001\u0000\u0000\u0000\u18aa\u187f\u0001"+
58195 		"\u0000\u0000\u0000\u18aa\u1880\u0001\u0000\u0000\u0000\u18aa\u1886\u0001"+
58196 		"\u0000\u0000\u0000\u18aa\u1887\u0001\u0000\u0000\u0000\u18aa\u188a\u0001"+
58197 		"\u0000\u0000\u0000\u18aa\u188b\u0001\u0000\u0000\u0000\u18aa\u188c\u0001"+
58198 		"\u0000\u0000\u0000\u18aa\u188d\u0001\u0000\u0000\u0000\u18aa\u1890\u0001"+
58199 		"\u0000\u0000\u0000\u18aa\u1892\u0001\u0000\u0000\u0000\u18aa\u1893\u0001"+
58200 		"\u0000\u0000\u0000\u18aa\u1894\u0001\u0000\u0000\u0000\u18aa\u189a\u0001"+
58201 		"\u0000\u0000\u0000\u18aa\u18a1\u0001\u0000\u0000\u0000\u18aa\u18a4\u0001"+
58202 		"\u0000\u0000\u0000\u18aa\u18a9\u0001\u0000\u0000\u0000\u18ab\u0357\u0001"+
58203 		"\u0000\u0000\u0000\u18ac\u18b0\u0003\u035a\u01ad\u0000\u18ad\u18b0\u0003"+
58204 		"\u035c\u01ae\u0000\u18ae\u18b0\u0003\u035e\u01af\u0000\u18af\u18ac\u0001"+
58205 		"\u0000\u0000\u0000\u18af\u18ad\u0001\u0000\u0000\u0000\u18af\u18ae\u0001"+
58206 		"\u0000\u0000\u0000\u18b0\u0359\u0001\u0000\u0000\u0000\u18b1\u18ba\u0005"+
58207 		"\u014b\u0000\u0000\u18b2\u18ba\u0005\u0165\u0000\u0000\u18b3\u18ba\u0005"+
58208 		"3\u0000\u0000\u18b4\u18b5\u0005J\u0000\u0000\u18b5\u18ba\u0005\u014f\u0000"+
58209 		"\u0000\u18b6\u18b7\u00053\u0000\u0000\u18b7\u18b8\u0005s\u0000\u0000\u18b8"+
58210 		"\u18ba\u0005\u0104\u0000\u0000\u18b9\u18b1\u0001\u0000\u0000\u0000\u18b9"+
58211 		"\u18b2\u0001\u0000\u0000\u0000\u18b9\u18b3\u0001\u0000\u0000\u0000\u18b9"+
58212 		"\u18b4\u0001\u0000\u0000\u0000\u18b9\u18b6\u0001\u0000\u0000\u0000\u18ba"+
58213 		"\u035b\u0001\u0000\u0000\u0000\u18bb\u18c5\u0005\u014b\u0000\u0000\u18bc"+
58214 		"\u18bd\u0005\u014d\u0000\u0000\u18bd\u18c5\u0005\u014e\u0000\u0000\u18be"+
58215 		"\u18c5\u00053\u0000\u0000\u18bf\u18c0\u0005J\u0000\u0000\u18c0\u18c5\u0005"+
58216 		"\u014f\u0000\u0000\u18c1\u18c2\u00053\u0000\u0000\u18c2\u18c3\u0005s\u0000"+
58217 		"\u0000\u18c3\u18c5\u0005\u0105\u0000\u0000\u18c4\u18bb\u0001\u0000\u0000"+
58218 		"\u0000\u18c4\u18bc\u0001\u0000\u0000\u0000\u18c4\u18be\u0001\u0000\u0000"+
58219 		"\u0000\u18c4\u18bf\u0001\u0000\u0000\u0000\u18c4\u18c1\u0001\u0000\u0000"+
58220 		"\u0000\u18c5\u035d\u0001\u0000\u0000\u0000\u18c6\u18cf\u0005\u014b\u0000"+
58221 		"\u0000\u18c7\u18cf\u00053\u0000\u0000\u18c8\u18c9\u0005J\u0000\u0000\u18c9"+
58222 		"\u18cf\u0005\u014f\u0000\u0000\u18ca\u18cb\u00053\u0000\u0000\u18cb\u18cc"+
58223 		"\u0005s\u0000\u0000\u18cc\u18cd\u0005\u0150\u0000\u0000\u18cd\u18cf\u0005"+
58224 		"\u0105\u0000\u0000\u18ce\u18c6\u0001\u0000\u0000\u0000\u18ce\u18c7\u0001"+
58225 		"\u0000\u0000\u0000\u18ce\u18c8\u0001\u0000\u0000\u0000\u18ce\u18ca\u0001"+
58226 		"\u0000\u0000\u0000\u18cf\u035f\u0001\u0000\u0000\u0000\u18d0\u18d8\u0005"+
58227 		"\u014b\u0000\u0000\u18d1\u18d2\u0005\u014d\u0000\u0000\u18d2\u18d8\u0005"+
58228 		"\u014e\u0000\u0000\u18d3\u18d8\u00053\u0000\u0000\u18d4\u18d8\u0005\u0103"+
58229 		"\u0000\u0000\u18d5\u18d6\u0005J\u0000\u0000\u18d6\u18d8\u0005\u014f\u0000"+
58230 		"\u0000\u18d7\u18d0\u0001\u0000\u0000\u0000\u18d7\u18d1\u0001\u0000\u0000"+
58231 		"\u0000\u18d7\u18d3\u0001\u0000\u0000\u0000\u18d7\u18d4\u0001\u0000\u0000"+
58232 		"\u0000\u18d7\u18d5\u0001\u0000\u0000\u0000\u18d8\u0361\u0001\u0000\u0000"+
58233 		"\u0000\u18d9\u18ee\u00053\u0000\u0000\u18da\u18ee\u0005\u014b\u0000\u0000"+
58234 		"\u18db\u18dc\u00052\u0000\u0000\u18dc\u18ee\u0005\u0193\u0000\u0000\u18dd"+
58235 		"\u18ee\u00051\u0000\u0000\u18de\u18ee\u0005\u0145\u0000\u0000\u18df\u18ee"+
58236 		"\u0005/\u0000\u0000\u18e0\u18ee\u0005\u0103\u0000\u0000\u18e1\u18ee\u0005"+
58237 		".\u0000\u0000\u18e2\u18e3\u0005\u014d\u0000\u0000\u18e3\u18ee\u0005\u014e"+
58238 		"\u0000\u0000\u18e4\u18ee\u00050\u0000\u0000\u18e5\u18e6\u0005J\u0000\u0000"+
58239 		"\u18e6\u18e7\u0005\u0156\u0000\u0000\u18e7\u18ee\u0005\u0158\u0000\u0000"+
58240 		"\u18e8\u18e9\u0005J\u0000\u0000\u18e9\u18ee\u0005\u014f\u0000\u0000\u18ea"+
58241 		"\u18eb\u00053\u0000\u0000\u18eb\u18ec\u0005s\u0000\u0000\u18ec\u18ee\u0005"+
58242 		"6\u0000\u0000\u18ed\u18d9\u0001\u0000\u0000\u0000\u18ed\u18da\u0001\u0000"+
58243 		"\u0000\u0000\u18ed\u18db\u0001\u0000\u0000\u0000\u18ed\u18dd\u0001\u0000"+
58244 		"\u0000\u0000\u18ed\u18de\u0001\u0000\u0000\u0000\u18ed\u18df\u0001\u0000"+
58245 		"\u0000\u0000\u18ed\u18e0\u0001\u0000\u0000\u0000\u18ed\u18e1\u0001\u0000"+
58246 		"\u0000\u0000\u18ed\u18e2\u0001\u0000\u0000\u0000\u18ed\u18e4\u0001\u0000"+
58247 		"\u0000\u0000\u18ed\u18e5\u0001\u0000\u0000\u0000\u18ed\u18e8\u0001\u0000"+
58248 		"\u0000\u0000\u18ed\u18ea\u0001\u0000\u0000\u0000\u18ee\u0363\u0001\u0000"+
58249 		"\u0000\u0000\u18ef\u18fb\u00053\u0000\u0000\u18f0\u18fb\u0005\u014b\u0000"+
58250 		"\u0000\u18f1\u18fb\u0005\u0103\u0000\u0000\u18f2\u18f3\u0005\u014d\u0000"+
58251 		"\u0000\u18f3\u18fb\u0005\u014e\u0000\u0000\u18f4\u18f5\u0005J\u0000\u0000"+
58252 		"\u18f5\u18fb\u0005\u014f\u0000\u0000\u18f6\u18f7\u00053\u0000\u0000\u18f7"+
58253 		"\u18f8\u0005s\u0000\u0000\u18f8\u18f9\u0005\u017c\u0000\u0000\u18f9\u18fb"+
58254 		"\u0005\u014a\u0000\u0000\u18fa\u18ef\u0001\u0000\u0000\u0000\u18fa\u18f0"+
58255 		"\u0001\u0000\u0000\u0000\u18fa\u18f1\u0001\u0000\u0000\u0000\u18fa\u18f2"+
58256 		"\u0001\u0000\u0000\u0000\u18fa\u18f4\u0001\u0000\u0000\u0000\u18fa\u18f6"+
58257 		"\u0001\u0000\u0000\u0000\u18fb\u0365\u0001\u0000\u0000\u0000\u18fc\u1902"+
58258 		"\u0003\u0368\u01b4\u0000\u18fd\u1902\u0003\u036a\u01b5\u0000\u18fe\u1902"+
58259 		"\u0003\u036c\u01b6\u0000\u18ff\u1902\u0003\u036e\u01b7\u0000\u1900\u1902"+
58260 		"\u0003\u0370\u01b8\u0000\u1901\u18fc\u0001\u0000\u0000\u0000\u1901\u18fd"+
58261 		"\u0001\u0000\u0000\u0000\u1901\u18fe\u0001\u0000\u0000\u0000\u1901\u18ff"+
58262 		"\u0001\u0000\u0000\u0000\u1901\u1900\u0001\u0000\u0000\u0000\u1902\u0367"+
58263 		"\u0001\u0000\u0000\u0000\u1903\u190e\u0005\u014b\u0000\u0000\u1904\u1905"+
58264 		"\u0005\u014d\u0000\u0000\u1905\u190e\u0005\u014e\u0000\u0000\u1906\u190e"+
58265 		"\u00053\u0000\u0000\u1907\u190e\u0005\u0103\u0000\u0000\u1908\u1909\u0005"+
58266 		"J\u0000\u0000\u1909\u190e\u0005\u014f\u0000\u0000\u190a\u190b\u00053\u0000"+
58267 		"\u0000\u190b\u190c\u0005s\u0000\u0000\u190c\u190e\u0005\u0174\u0000\u0000"+
58268 		"\u190d\u1903\u0001\u0000\u0000\u0000\u190d\u1904\u0001\u0000\u0000\u0000"+
58269 		"\u190d\u1906\u0001\u0000\u0000\u0000\u190d\u1907\u0001\u0000\u0000\u0000"+
58270 		"\u190d\u1908\u0001\u0000\u0000\u0000\u190d\u190a\u0001\u0000\u0000\u0000"+
58271 		"\u190e\u0369\u0001\u0000\u0000\u0000\u190f\u191b\u0005\u014b\u0000\u0000"+
58272 		"\u1910\u1911\u0005\u014d\u0000\u0000\u1911\u191b\u0005\u014e\u0000\u0000"+
58273 		"\u1912\u191b\u00053\u0000\u0000\u1913\u191b\u0005\u0103\u0000\u0000\u1914"+
58274 		"\u1915\u0005J\u0000\u0000\u1915\u191b\u0005\u014f\u0000\u0000\u1916\u1917"+
58275 		"\u00053\u0000\u0000\u1917\u1918\u0005s\u0000\u0000\u1918\u1919\u0005\u017f"+
58276 		"\u0000\u0000\u1919\u191b\u0005\u00b0\u0000\u0000\u191a\u190f\u0001\u0000"+
58277 		"\u0000\u0000\u191a\u1910\u0001\u0000\u0000\u0000\u191a\u1912\u0001\u0000"+
58278 		"\u0000\u0000\u191a\u1913\u0001\u0000\u0000\u0000\u191a\u1914\u0001\u0000"+
58279 		"\u0000\u0000\u191a\u1916\u0001\u0000\u0000\u0000\u191b\u036b\u0001\u0000"+
58280 		"\u0000\u0000\u191c\u1928\u0005\u014b\u0000\u0000\u191d\u191e\u0005\u014d"+
58281 		"\u0000\u0000\u191e\u1928\u0005\u014e\u0000\u0000\u191f\u1928\u00053\u0000"+
58282 		"\u0000\u1920\u1921\u0005J\u0000\u0000\u1921\u1928\u0005\u014f\u0000\u0000"+
58283 		"\u1922\u1923\u00053\u0000\u0000\u1923\u1924\u0005s\u0000\u0000\u1924\u1925"+
58284 		"\u0005\u0180\u0000\u0000\u1925\u1926\u0005\u0172\u0000\u0000\u1926\u1928"+
58285 		"\u0005\u0181\u0000\u0000\u1927\u191c\u0001\u0000\u0000\u0000\u1927\u191d"+
58286 		"\u0001\u0000\u0000\u0000\u1927\u191f\u0001\u0000\u0000\u0000\u1927\u1920"+
58287 		"\u0001\u0000\u0000\u0000\u1927\u1922\u0001\u0000\u0000\u0000\u1928\u036d"+
58288 		"\u0001\u0000\u0000\u0000\u1929\u1933\u0005\u014b\u0000\u0000\u192a\u192b"+
58289 		"\u0005\u014d\u0000\u0000\u192b\u1933\u0005\u014e\u0000\u0000\u192c\u1933"+
58290 		"\u00053\u0000\u0000\u192d\u192e\u0005J\u0000\u0000\u192e\u1933\u0005\u014f"+
58291 		"\u0000\u0000\u192f\u1930\u00053\u0000\u0000\u1930\u1931\u0005s\u0000\u0000"+
58292 		"\u1931\u1933\u0005\u0182\u0000\u0000\u1932\u1929\u0001\u0000\u0000\u0000"+
58293 		"\u1932\u192a\u0001\u0000\u0000\u0000\u1932\u192c\u0001\u0000\u0000\u0000"+
58294 		"\u1932\u192d\u0001\u0000\u0000\u0000\u1932\u192f\u0001\u0000\u0000\u0000"+
58295 		"\u1933\u036f\u0001\u0000\u0000\u0000\u1934\u193f\u0005\u014b\u0000\u0000"+
58296 		"\u1935\u1936\u0005\u014d\u0000\u0000\u1936\u193f\u0005\u014e\u0000\u0000"+
58297 		"\u1937\u193f\u0005\u02ac\u0000\u0000\u1938\u193f\u00053\u0000\u0000\u1939"+
58298 		"\u193a\u0005J\u0000\u0000\u193a\u193f\u0005\u014f\u0000\u0000\u193b\u193c"+
58299 		"\u00053\u0000\u0000\u193c\u193d\u0005s\u0000\u0000\u193d\u193f\u0005\u0172"+
58300 		"\u0000\u0000\u193e\u1934\u0001\u0000\u0000\u0000\u193e\u1935\u0001\u0000"+
58301 		"\u0000\u0000\u193e\u1937\u0001\u0000\u0000\u0000\u193e\u1938\u0001\u0000"+
58302 		"\u0000\u0000\u193e\u1939\u0001\u0000\u0000\u0000\u193e\u193b\u0001\u0000"+
58303 		"\u0000\u0000\u193f\u0371\u0001\u0000\u0000\u0000\u1940\u1951\u00053\u0000"+
58304 		"\u0000\u1941\u1951\u0005\u0148\u0000\u0000\u1942\u1944\u0005\u014b\u0000"+
58305 		"\u0000\u1943\u1945\u0005\u0154\u0000\u0000\u1944\u1943\u0001\u0000\u0000"+
58306 		"\u0000\u1944\u1945\u0001\u0000\u0000\u0000\u1945\u1951\u0001\u0000\u0000"+
58307 		"\u0000\u1946\u1947\u0005\u014d\u0000\u0000\u1947\u1951\u0005\u014e\u0000"+
58308 		"\u0000\u1948\u194a\u0005J\u0000\u0000\u1949\u194b\u0005s\u0000\u0000\u194a"+
58309 		"\u1949\u0001\u0000\u0000\u0000\u194a\u194b\u0001\u0000\u0000\u0000\u194b"+
58310 		"\u194c\u0001\u0000\u0000\u0000\u194c\u1951\u0005\u014f\u0000\u0000\u194d"+
58311 		"\u194e\u00053\u0000\u0000\u194e\u194f\u0005s\u0000\u0000\u194f\u1951\u0005"+
58312 		"\u015e\u0000\u0000\u1950\u1940\u0001\u0000\u0000\u0000\u1950\u1941\u0001"+
58313 		"\u0000\u0000\u0000\u1950\u1942\u0001\u0000\u0000\u0000\u1950\u1946\u0001"+
58314 		"\u0000\u0000\u0000\u1950\u1948\u0001\u0000\u0000\u0000\u1950\u194d\u0001"+
58315 		"\u0000\u0000\u0000\u1951\u0373\u0001\u0000\u0000\u0000\u1952\u195d\u0005"+
58316 		"\u014b\u0000\u0000\u1953\u1954\u0005\u014d\u0000\u0000\u1954\u195d\u0005"+
58317 		"\u014e\u0000\u0000\u1955\u195d\u00053\u0000\u0000\u1956\u195d\u0005\u0103"+
58318 		"\u0000\u0000\u1957\u1958\u0005J\u0000\u0000\u1958\u195d\u0005\u014f\u0000"+
58319 		"\u0000\u1959\u195a\u00053\u0000\u0000\u195a\u195b\u0005s\u0000\u0000\u195b"+
58320 		"\u195d\u0005\u0173\u0000\u0000\u195c\u1952\u0001\u0000\u0000\u0000\u195c"+
58321 		"\u1953\u0001\u0000\u0000\u0000\u195c\u1955\u0001\u0000\u0000\u0000\u195c"+
58322 		"\u1956\u0001\u0000\u0000\u0000\u195c\u1957\u0001\u0000\u0000\u0000\u195c"+
58323 		"\u1959\u0001\u0000\u0000\u0000\u195d\u0375\u0001\u0000\u0000\u0000\u195e"+
58324 		"\u196a\u00053\u0000\u0000\u195f\u196a\u0005\u014b\u0000\u0000\u1960\u196a"+
58325 		"\u0005\u0103\u0000\u0000\u1961\u1962\u0005\u014d\u0000\u0000\u1962\u196a"+
58326 		"\u0005\u014e\u0000\u0000\u1963\u1964\u0005J\u0000\u0000\u1964\u196a\u0005"+
58327 		"\u014f\u0000\u0000\u1965\u1966\u00053\u0000\u0000\u1966\u1967\u0005s\u0000"+
58328 		"\u0000\u1967\u1968\u0005\u0152\u0000\u0000\u1968\u196a\u0005C\u0000\u0000"+
58329 		"\u1969\u195e\u0001\u0000\u0000\u0000\u1969\u195f\u0001\u0000\u0000\u0000"+
58330 		"\u1969\u1960\u0001\u0000\u0000\u0000\u1969\u1961\u0001\u0000\u0000\u0000"+
58331 		"\u1969\u1963\u0001\u0000\u0000\u0000\u1969\u1965\u0001\u0000\u0000\u0000"+
58332 		"\u196a\u0377\u0001\u0000\u0000\u0000\u196b\u1977\u0005\u014b\u0000\u0000"+
58333 		"\u196c\u196d\u0005\u014d\u0000\u0000\u196d\u1977\u0005\u014e\u0000\u0000"+
58334 		"\u196e\u1977\u00053\u0000\u0000\u196f\u1977\u0005\u0103\u0000\u0000\u1970"+
58335 		"\u1971\u0005J\u0000\u0000\u1971\u1977\u0005\u014f\u0000\u0000\u1972\u1973"+
58336 		"\u00053\u0000\u0000\u1973\u1974\u0005s\u0000\u0000\u1974\u1975\u0005\u0153"+
58337 		"\u0000\u0000\u1975\u1977\u0005C\u0000\u0000\u1976\u196b\u0001\u0000\u0000"+
58338 		"\u0000\u1976\u196c\u0001\u0000\u0000\u0000\u1976\u196e\u0001\u0000\u0000"+
58339 		"\u0000\u1976\u196f\u0001\u0000\u0000\u0000\u1976\u1970\u0001\u0000\u0000"+
58340 		"\u0000\u1976\u1972\u0001\u0000\u0000\u0000\u1977\u0379\u0001\u0000\u0000"+
58341 		"\u0000\u1978\u1983\u0005\u014b\u0000\u0000\u1979\u197a\u0005\u014d\u0000"+
58342 		"\u0000\u197a\u1983\u0005\u014e\u0000\u0000\u197b\u1983\u00053\u0000\u0000"+
58343 		"\u197c\u1983\u0005\u0103\u0000\u0000\u197d\u197e\u0005J\u0000\u0000\u197e"+
58344 		"\u1983\u0005\u014f\u0000\u0000\u197f\u1980\u00053\u0000\u0000\u1980\u1981"+
58345 		"\u0005s\u0000\u0000\u1981\u1983\u0005\u0151\u0000\u0000\u1982\u1978\u0001"+
58346 		"\u0000\u0000\u0000\u1982\u1979\u0001\u0000\u0000\u0000\u1982\u197b\u0001"+
58347 		"\u0000\u0000\u0000\u1982\u197c\u0001\u0000\u0000\u0000\u1982\u197d\u0001"+
58348 		"\u0000\u0000\u0000\u1982\u197f\u0001\u0000\u0000\u0000\u1983\u037b\u0001"+
58349 		"\u0000\u0000\u0000\u1984\u1996\u00053\u0000\u0000\u1985\u1996\u0005\u0148"+
58350 		"\u0000\u0000\u1986\u1988\u0005\u014b\u0000\u0000\u1987\u1989\u0005\u0154"+
58351 		"\u0000\u0000\u1988\u1987\u0001\u0000\u0000\u0000\u1988\u1989\u0001\u0000"+
58352 		"\u0000\u0000\u1989\u1996\u0001\u0000\u0000\u0000\u198a\u198b\u0005\u014d"+
58353 		"\u0000\u0000\u198b\u1996\u0005\u014e\u0000\u0000\u198c\u198e\u0005J\u0000"+
58354 		"\u0000\u198d\u198f\u0005s\u0000\u0000\u198e\u198d\u0001\u0000\u0000\u0000"+
58355 		"\u198e\u198f\u0001\u0000\u0000\u0000\u198f\u1990\u0001\u0000\u0000\u0000"+
58356 		"\u1990\u1996\u0005\u014f\u0000\u0000\u1991\u1992\u00053\u0000\u0000\u1992"+
58357 		"\u1993\u0005s\u0000\u0000\u1993\u1994\u0005\u015c\u0000\u0000\u1994\u1996"+
58358 		"\u0005v\u0000\u0000\u1995\u1984\u0001\u0000\u0000\u0000\u1995\u1985\u0001"+
58359 		"\u0000\u0000\u0000\u1995\u1986\u0001\u0000\u0000\u0000\u1995\u198a\u0001"+
58360 		"\u0000\u0000\u0000\u1995\u198c\u0001\u0000\u0000\u0000\u1995\u1991\u0001"+
58361 		"\u0000\u0000\u0000\u1996\u037d\u0001\u0000\u0000\u0000\u1997\u199a\u0003"+
58362 		"\u0380\u01c0\u0000\u1998\u199a\u0003\u0382\u01c1\u0000\u1999\u1997\u0001"+
58363 		"\u0000\u0000\u0000\u1999\u1998\u0001\u0000\u0000\u0000\u199a\u037f\u0001"+
58364 		"\u0000\u0000\u0000\u199b\u19a7\u0005\u014b\u0000\u0000\u199c\u199d\u0005"+
58365 		"\u014d\u0000\u0000\u199d\u19a7\u0005\u014e\u0000\u0000\u199e\u19a7\u0005"+
58366 		"3\u0000\u0000\u199f\u19a7\u0005\u0103\u0000\u0000\u19a0\u19a1\u0005J\u0000"+
58367 		"\u0000\u19a1\u19a7\u0005\u014f\u0000\u0000\u19a2\u19a3\u00053\u0000\u0000"+
58368 		"\u19a3\u19a4\u0005s\u0000\u0000\u19a4\u19a5\u0005\u017c\u0000\u0000\u19a5"+
58369 		"\u19a7\u0005\u014a\u0000\u0000\u19a6\u199b\u0001\u0000\u0000\u0000\u19a6"+
58370 		"\u199c\u0001\u0000\u0000\u0000\u19a6\u199e\u0001\u0000\u0000\u0000\u19a6"+
58371 		"\u199f\u0001\u0000\u0000\u0000\u19a6\u19a0\u0001\u0000\u0000\u0000\u19a6"+
58372 		"\u19a2\u0001\u0000\u0000\u0000\u19a7\u0381\u0001\u0000\u0000\u0000\u19a8"+
58373 		"\u19b4\u00053\u0000\u0000\u19a9\u19b4\u0005\u014b\u0000\u0000\u19aa\u19b4"+
58374 		"\u0005\u0103\u0000\u0000\u19ab\u19ac\u0005\u014d\u0000\u0000\u19ac\u19b4"+
58375 		"\u0005\u014e\u0000\u0000\u19ad\u19ae\u0005J\u0000\u0000\u19ae\u19b4\u0005"+
58376 		"\u014f\u0000\u0000\u19af\u19b0\u00053\u0000\u0000\u19b0\u19b1\u0005s\u0000"+
58377 		"\u0000\u19b1\u19b2\u0005\u017c\u0000\u0000\u19b2\u19b4\u0005\u014a\u0000"+
58378 		"\u0000\u19b3\u19a8\u0001\u0000\u0000\u0000\u19b3\u19a9\u0001\u0000\u0000"+
58379 		"\u0000\u19b3\u19aa\u0001\u0000\u0000\u0000\u19b3\u19ab\u0001\u0000\u0000"+
58380 		"\u0000\u19b3\u19ad\u0001\u0000\u0000\u0000\u19b3\u19af\u0001\u0000\u0000"+
58381 		"\u0000\u19b4\u0383\u0001\u0000\u0000\u0000\u19b5\u19bd\u0005\u014b\u0000"+
58382 		"\u0000\u19b6\u19bd\u0005\u0145\u0000\u0000\u19b7\u19bd\u0005\u0103\u0000"+
58383 		"\u0000\u19b8\u19b9\u0005\u014d\u0000\u0000\u19b9\u19bd\u0005\u014e\u0000"+
58384 		"\u0000\u19ba\u19bb\u0005J\u0000\u0000\u19bb\u19bd\u0005\u014f\u0000\u0000"+
58385 		"\u19bc\u19b5\u0001\u0000\u0000\u0000\u19bc\u19b6\u0001\u0000\u0000\u0000"+
58386 		"\u19bc\u19b7\u0001\u0000\u0000\u0000\u19bc\u19b8\u0001\u0000\u0000\u0000"+
58387 		"\u19bc\u19ba\u0001\u0000\u0000\u0000\u19bd\u0385\u0001\u0000\u0000\u0000"+
58388 		"\u19be\u19c7\u00053\u0000\u0000\u19bf\u19c7\u0005\u014b\u0000\u0000\u19c0"+
58389 		"\u19c7\u0005\u0145\u0000\u0000\u19c1\u19c7\u0005\u0103\u0000\u0000\u19c2"+
58390 		"\u19c3\u0005\u014d\u0000\u0000\u19c3\u19c7\u0005\u014e\u0000\u0000\u19c4"+
58391 		"\u19c5\u0005J\u0000\u0000\u19c5\u19c7\u0005\u014f\u0000\u0000\u19c6\u19be"+
58392 		"\u0001\u0000\u0000\u0000\u19c6\u19bf\u0001\u0000\u0000\u0000\u19c6\u19c0"+
58393 		"\u0001\u0000\u0000\u0000\u19c6\u19c1\u0001\u0000\u0000\u0000\u19c6\u19c2"+
58394 		"\u0001\u0000\u0000\u0000\u19c6\u19c4\u0001\u0000\u0000\u0000\u19c7\u0387"+
58395 		"\u0001\u0000\u0000\u0000\u19c8\u19c9\u0007a\u0000\u0000\u19c9\u0389\u0001"+
58396 		"\u0000\u0000\u0000\u19ca\u19cb\u0005\u02d1\u0000\u0000\u19cb\u19cc\u0005"+
58397 		"\u000e\u0000\u0000\u19cc\u19cd\u0005\u000e\u0000\u0000\u19cd\u038b\u0001"+
58398 		"\u0000\u0000\u0000\u19ce\u19f7\u0005\u0151\u0000\u0000\u19cf\u19d0\u0005"+
58399 		"\u0153\u0000\u0000\u19d0\u19f7\u0005C\u0000\u0000\u19d1\u19d2\u0005\u015c"+
58400 		"\u0000\u0000\u19d2\u19f7\u0005v\u0000\u0000\u19d3\u19f7\u0005\u0173\u0000"+
58401 		"\u0000\u19d4\u19f7\u0005\u0104\u0000\u0000\u19d5\u19f7\u0005\u0105\u0000"+
58402 		"\u0000\u19d6\u19d7\u0005\u0150\u0000\u0000\u19d7\u19f7\u0005\u0105\u0000"+
58403 		"\u0000\u19d8\u19d9\u0005\u00cc\u0000\u0000\u19d9\u19da\u0005\u016f\u0000"+
58404 		"\u0000\u19da\u19f7\u0005\u015d\u0000\u0000\u19db\u19f7\u0005\u015e\u0000"+
58405 		"\u0000\u19dc\u19dd\u0005\u017c\u0000\u0000\u19dd\u19f7\u0007b\u0000\u0000"+
58406 		"\u19de\u19f7\u0005\u012f\u0000\u0000\u19df\u19f7\u00056\u0000\u0000\u19e0"+
58407 		"\u19e1\u0005\u02a9\u0000\u0000\u19e1\u19e2\u0005\u02aa\u0000\u0000\u19e2"+
58408 		"\u19f7\u0005\u02ab\u0000\u0000\u19e3\u19f7\u0005\u0129\u0000\u0000\u19e4"+
58409 		"\u19e5\u0005\u0154\u0000\u0000\u19e5\u19f7\u0005\u0105\u0000\u0000\u19e6"+
58410 		"\u19f7\u0005\u0174\u0000\u0000\u19e7\u19e8\u0005\u017f\u0000\u0000\u19e8"+
58411 		"\u19f7\u0005\u00b0\u0000\u0000\u19e9\u19ea\u0005\u0180\u0000\u0000\u19ea"+
58412 		"\u19eb\u0005\u0172\u0000\u0000\u19eb\u19f7\u0005\u0181\u0000\u0000\u19ec"+
58413 		"\u19f7\u0005\u0182\u0000\u0000\u19ed\u19f7\u0005\u0172\u0000\u0000\u19ee"+
58414 		"\u19ef\u0005\u0152\u0000\u0000\u19ef\u19f7\u0005C\u0000\u0000\u19f0\u19f7"+
58415 		"\u0005.\u0000\u0000\u19f1\u19f7\u0005\u0145\u0000\u0000\u19f2\u19f7\u0005"+
58416 		"\u00b0\u0000\u0000\u19f3\u19f4\u0005\u0164\u0000\u0000\u19f4\u19f5\u0005"+
58417 		"6\u0000\u0000\u19f5\u19f7\u0005\u0189\u0000\u0000\u19f6\u19ce\u0001\u0000"+
58418 		"\u0000\u0000\u19f6\u19cf\u0001\u0000\u0000\u0000\u19f6\u19d1\u0001\u0000"+
58419 		"\u0000\u0000\u19f6\u19d3\u0001\u0000\u0000\u0000\u19f6\u19d4\u0001\u0000"+
58420 		"\u0000\u0000\u19f6\u19d5\u0001\u0000\u0000\u0000\u19f6\u19d6\u0001\u0000"+
58421 		"\u0000\u0000\u19f6\u19d8\u0001\u0000\u0000\u0000\u19f6\u19db\u0001\u0000"+
58422 		"\u0000\u0000\u19f6\u19dc\u0001\u0000\u0000\u0000\u19f6\u19de\u0001\u0000"+
58423 		"\u0000\u0000\u19f6\u19df\u0001\u0000\u0000\u0000\u19f6\u19e0\u0001\u0000"+
58424 		"\u0000\u0000\u19f6\u19e3\u0001\u0000\u0000\u0000\u19f6\u19e4\u0001\u0000"+
58425 		"\u0000\u0000\u19f6\u19e6\u0001\u0000\u0000\u0000\u19f6\u19e7\u0001\u0000"+
58426 		"\u0000\u0000\u19f6\u19e9\u0001\u0000\u0000\u0000\u19f6\u19ec\u0001\u0000"+
58427 		"\u0000\u0000\u19f6\u19ed\u0001\u0000\u0000\u0000\u19f6\u19ee\u0001\u0000"+
58428 		"\u0000\u0000\u19f6\u19f0\u0001\u0000\u0000\u0000\u19f6\u19f1\u0001\u0000"+
58429 		"\u0000\u0000\u19f6\u19f2\u0001\u0000\u0000\u0000\u19f6\u19f3\u0001\u0000"+
58430 		"\u0000\u0000\u19f7\u038d\u0001\u0000\u0000\u0000\u19f8\u19f9\u0007c\u0000"+
58431 		"\u0000\u19f9\u038f\u0001\u0000\u0000\u0000\u19fa\u19fb\u0003\u00e6s\u0000"+
58432 		"\u19fb\u0391\u0001\u0000\u0000\u0000\u19fc\u1a02\u0005\u029f\u0000\u0000"+
58433 		"\u19fd\u1a00\u0003\u001c\u000e\u0000\u19fe\u19ff\u0005M\u0000\u0000\u19ff"+
58434 		"\u1a01\u0005\u02a0\u0000\u0000\u1a00\u19fe\u0001\u0000\u0000\u0000\u1a00"+
58435 		"\u1a01\u0001\u0000\u0000\u0000\u1a01\u1a03\u0001\u0000\u0000\u0000\u1a02"+
58436 		"\u19fd\u0001\u0000\u0000\u0000\u1a02\u1a03\u0001\u0000\u0000\u0000\u1a03"+
58437 		"\u0393\u0001\u0000\u0000\u0000\u1a04\u1a05\u00052\u0000\u0000\u1a05\u1a0e"+
58438 		"\u0005\u0104\u0000\u0000\u1a06\u1a0f\u0003\u0396\u01cb\u0000\u1a07\u1a0f"+
58439 		"\u0003\u0398\u01cc\u0000\u1a08\u1a0f\u0003\u039a\u01cd\u0000\u1a09\u1a0f"+
58440 		"\u0003\u039c\u01ce\u0000\u1a0a\u1a0f\u0003\u03a2\u01d1\u0000\u1a0b\u1a0f"+
58441 		"\u0003\u03a4\u01d2\u0000\u1a0c\u1a0f\u0003\u03a6\u01d3\u0000\u1a0d\u1a0f"+
58442 		"\u0003\u03ac\u01d6\u0000\u1a0e\u1a06\u0001\u0000\u0000\u0000\u1a0e\u1a07"+
58443 		"\u0001\u0000\u0000\u0000\u1a0e\u1a08\u0001\u0000\u0000\u0000\u1a0e\u1a09"+
58444 		"\u0001\u0000\u0000\u0000\u1a0e\u1a0a\u0001\u0000\u0000\u0000\u1a0e\u1a0b"+
58445 		"\u0001\u0000\u0000\u0000\u1a0e\u1a0c\u0001\u0000\u0000\u0000\u1a0e\u1a0d"+
58446 		"\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0001\u0000\u0000\u0000\u1a0f\u0395"+
58447 		"\u0001\u0000\u0000\u0000\u1a10\u1a14\u0003\u03ac\u01d6\u0000\u1a11\u1a12"+
58448 		"\u0007d\u0000\u0000\u1a12\u1a13\u0005\u0129\u0000\u0000\u1a13\u1a15\u0003"+
58449 		"*\u0015\u0000\u1a14\u1a11\u0001\u0000\u0000\u0000\u1a14\u1a15\u0001\u0000"+
58450 		"\u0000\u0000\u1a15\u1a1f\u0001\u0000\u0000\u0000\u1a16\u1a17\u0005M\u0000"+
58451 		"\u0000\u1a17\u1a1c\u0003\u03a0\u01d0\u0000\u1a18\u1a19\u0005%\u0000\u0000"+
58452 		"\u1a19\u1a1b\u0003\u03a0\u01d0\u0000\u1a1a\u1a18\u0001\u0000\u0000\u0000"+
58453 		"\u1a1b\u1a1e\u0001\u0000\u0000\u0000\u1a1c\u1a1a\u0001\u0000\u0000\u0000"+
58454 		"\u1a1c\u1a1d\u0001\u0000\u0000\u0000\u1a1d\u1a20\u0001\u0000\u0000\u0000"+
58455 		"\u1a1e\u1a1c\u0001\u0000\u0000\u0000\u1a1f\u1a16\u0001\u0000\u0000\u0000"+
58456 		"\u1a1f\u1a20\u0001\u0000\u0000\u0000\u1a20\u0397\u0001\u0000\u0000\u0000"+
58457 		"\u1a21\u1a2b\u0003\u03a8\u01d4\u0000\u1a22\u1a23\u0005M\u0000\u0000\u1a23"+
58458 		"\u1a28\u0003\u039e\u01cf\u0000\u1a24\u1a25\u0005%\u0000\u0000\u1a25\u1a27"+
58459 		"\u0003\u039e\u01cf\u0000\u1a26\u1a24\u0001\u0000\u0000\u0000\u1a27\u1a2a"+
58460 		"\u0001\u0000\u0000\u0000\u1a28\u1a26\u0001\u0000\u0000\u0000\u1a28\u1a29"+
58461 		"\u0001\u0000\u0000\u0000\u1a29\u1a2c\u0001\u0000\u0000\u0000\u1a2a\u1a28"+
58462 		"\u0001\u0000\u0000\u0000\u1a2b\u1a22\u0001\u0000\u0000\u0000\u1a2b\u1a2c"+
58463 		"\u0001\u0000\u0000\u0000\u1a2c\u1a43\u0001\u0000\u0000\u0000\u1a2d\u1a2e"+
58464 		"\u0003\u03ac\u01d6\u0000\u1a2e\u1a2f\u0005M\u0000\u0000\u1a2f\u1a30\u0005"+
58465 		"\u00d5\u0000\u0000\u1a30\u1a31\u0005\u0018\u0000\u0000\u1a31\u1a3b\u0003"+
58466 		"\u001c\u000e\u0000\u1a32\u1a33\u0005%\u0000\u0000\u1a33\u1a38\u0003\u039e"+
58467 		"\u01cf\u0000\u1a34\u1a35\u0005%\u0000\u0000\u1a35\u1a37\u0003\u039e\u01cf"+
58468 		"\u0000\u1a36\u1a34\u0001\u0000\u0000\u0000\u1a37\u1a3a\u0001\u0000\u0000"+
58469 		"\u0000\u1a38\u1a36\u0001\u0000\u0000\u0000\u1a38\u1a39\u0001\u0000\u0000"+
58470 		"\u0000\u1a39\u1a3c\u0001\u0000\u0000\u0000\u1a3a\u1a38\u0001\u0000\u0000"+
58471 		"\u0000\u1a3b\u1a32\u0001\u0000\u0000\u0000\u1a3b\u1a3c\u0001\u0000\u0000"+
58472 		"\u0000\u1a3c\u1a43\u0001\u0000\u0000\u0000\u1a3d\u1a3e\u0003\u03aa\u01d5"+
58473 		"\u0000\u1a3e\u1a3f\u0005U\u0000\u0000\u1a3f\u1a40\u0005\u0168\u0000\u0000"+
58474 		"\u1a40\u1a41\u0005\u02a4\u0000\u0000\u1a41\u1a43\u0001\u0000\u0000\u0000"+
58475 		"\u1a42\u1a21\u0001\u0000\u0000\u0000\u1a42\u1a2d\u0001\u0000\u0000\u0000"+
58476 		"\u1a42\u1a3d\u0001\u0000\u0000\u0000\u1a43\u0399\u0001\u0000\u0000\u0000"+
58477 		"\u1a44\u1a48\u0003\u03a8\u01d4\u0000\u1a45\u1a46\u0007d\u0000\u0000\u1a46"+
58478 		"\u1a47\u0005\u0129\u0000\u0000\u1a47\u1a49\u0003\u03a8\u01d4\u0000\u1a48"+
58479 		"\u1a45\u0001\u0000\u0000\u0000\u1a48\u1a49\u0001\u0000\u0000\u0000\u1a49"+
58480 		"\u1a50\u0001\u0000\u0000\u0000\u1a4a\u1a4b\u0003\u03ac\u01d6\u0000\u1a4b"+
58481 		"\u1a4c\u0007d\u0000\u0000\u1a4c\u1a4d\u0005\u0129\u0000\u0000\u1a4d\u1a4e"+
58482 		"\u0003\u03a8\u01d4\u0000\u1a4e\u1a50\u0001\u0000\u0000\u0000\u1a4f\u1a44"+
58483 		"\u0001\u0000\u0000\u0000\u1a4f\u1a4a\u0001\u0000\u0000\u0000\u1a50\u1a5a"+
58484 		"\u0001\u0000\u0000\u0000\u1a51\u1a52\u0005M\u0000\u0000\u1a52\u1a57\u0003"+
58485 		"\u03a0\u01d0\u0000\u1a53\u1a54\u0005%\u0000\u0000\u1a54\u1a56\u0003\u03a0"+
58486 		"\u01d0\u0000\u1a55\u1a53\u0001\u0000\u0000\u0000\u1a56\u1a59\u0001\u0000"+
58487 		"\u0000\u0000\u1a57\u1a55\u0001\u0000\u0000\u0000\u1a57\u1a58\u0001\u0000"+
58488 		"\u0000\u0000\u1a58\u1a5b\u0001\u0000\u0000\u0000\u1a59\u1a57\u0001\u0000"+
58489 		"\u0000\u0000\u1a5a\u1a51\u0001\u0000\u0000\u0000\u1a5a\u1a5b\u0001\u0000"+
58490 		"\u0000\u0000\u1a5b\u039b\u0001\u0000\u0000\u0000\u1a5c\u1a71\u0003\u03ac"+
58491 		"\u01d6\u0000\u1a5d\u1a5e\u0005\u00d6\u0000\u0000\u1a5e\u1a68\u0005\u0129"+
58492 		"\u0000\u0000\u1a5f\u1a60\u0005M\u0000\u0000\u1a60\u1a65\u0003\u03a0\u01d0"+
58493 		"\u0000\u1a61\u1a62\u0005%\u0000\u0000\u1a62\u1a64\u0003\u03a0\u01d0\u0000"+
58494 		"\u1a63\u1a61\u0001\u0000\u0000\u0000\u1a64\u1a67\u0001\u0000\u0000\u0000"+
58495 		"\u1a65\u1a63\u0001\u0000\u0000\u0000\u1a65\u1a66\u0001\u0000\u0000\u0000"+
58496 		"\u1a66\u1a69\u0001\u0000\u0000\u0000\u1a67\u1a65\u0001\u0000\u0000\u0000"+
58497 		"\u1a68\u1a5f\u0001\u0000\u0000\u0000\u1a68\u1a69\u0001\u0000\u0000\u0000"+
58498 		"\u1a69\u1a72\u0001\u0000\u0000\u0000\u1a6a\u1a6b\u0007d\u0000\u0000\u1a6b"+
58499 		"\u1a6c\u0005\u0173\u0000\u0000\u1a6c\u1a72\u0003*\u0015\u0000\u1a6d\u1a6e"+
58500 		"\u0007d\u0000\u0000\u1a6e\u1a6f\u0005\u0153\u0000\u0000\u1a6f\u1a70\u0005"+
58501 		"C\u0000\u0000\u1a70\u1a72\u0003*\u0015\u0000\u1a71\u1a5d\u0001\u0000\u0000"+
58502 		"\u0000\u1a71\u1a6a\u0001\u0000\u0000\u0000\u1a71\u1a6d\u0001\u0000\u0000"+
58503 		"\u0000\u1a72\u039d\u0001\u0000\u0000\u0000\u1a73\u1a74\u0005\u02a1\u0000"+
58504 		"\u0000\u1a74\u1a75\u0005\u0018\u0000\u0000\u1a75\u1a85\u00034\u001a\u0000"+
58505 		"\u1a76\u1a77\u0005\u0291\u0000\u0000\u1a77\u1a7a\u0005\u0018\u0000\u0000"+
58506 		"\u1a78\u1a7b\u0005\u012e\u0000\u0000\u1a79\u1a7b\u0003*\u0015\u0000\u1a7a"+
58507 		"\u1a78\u0001\u0000\u0000\u0000\u1a7a\u1a79\u0001\u0000\u0000\u0000\u1a7b"+
58508 		"\u1a85\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0005\u02a5\u0000\u0000\u1a7d"+
58509 		"\u1a7e\u0005\u0018\u0000\u0000\u1a7e\u1a85\u0003\u03c6\u01e3\u0000\u1a7f"+
58510 		"\u1a80\u0005\u02a2\u0000\u0000\u1a80\u1a82\u0005\u0018\u0000\u0000\u1a81"+
58511 		"\u1a83\u0007\u0000\u0000\u0000\u1a82\u1a81\u0001\u0000\u0000\u0000\u1a82"+
58512 		"\u1a83\u0001\u0000\u0000\u0000\u1a83\u1a85\u0001\u0000\u0000\u0000\u1a84"+
58513 		"\u1a73\u0001\u0000\u0000\u0000\u1a84\u1a76\u0001\u0000\u0000\u0000\u1a84"+
58514 		"\u1a7c\u0001\u0000\u0000\u0000\u1a84\u1a7f\u0001\u0000\u0000\u0000\u1a85"+
58515 		"\u039f\u0001\u0000\u0000\u0000\u1a86\u1a87\u0005\u02a1\u0000\u0000\u1a87"+
58516 		"\u1a88\u0005\u0018\u0000\u0000\u1a88\u1a95\u00034\u001a\u0000\u1a89\u1a8a"+
58517 		"\u0005\u0291\u0000\u0000\u1a8a\u1a8d\u0005\u0018\u0000\u0000\u1a8b\u1a8e"+
58518 		"\u0005\u012e\u0000\u0000\u1a8c\u1a8e\u0003*\u0015\u0000\u1a8d\u1a8b\u0001"+
58519 		"\u0000\u0000\u0000\u1a8d\u1a8c\u0001\u0000\u0000\u0000\u1a8e\u1a95\u0001"+
58520 		"\u0000\u0000\u0000\u1a8f\u1a90\u0005\u02a2\u0000\u0000\u1a90\u1a92\u0005"+
58521 		"\u0018\u0000\u0000\u1a91\u1a93\u0007\u0000\u0000\u0000\u1a92\u1a91\u0001"+
58522 		"\u0000\u0000\u0000\u1a92\u1a93\u0001\u0000\u0000\u0000\u1a93\u1a95\u0001"+
58523 		"\u0000\u0000\u0000\u1a94\u1a86\u0001\u0000\u0000\u0000\u1a94\u1a89\u0001"+
58524 		"\u0000\u0000\u0000\u1a94\u1a8f\u0001\u0000\u0000\u0000\u1a95\u03a1\u0001"+
58525 		"\u0000\u0000\u0000\u1a96\u1a9a\u0003\u03ac\u01d6\u0000\u1a97\u1a98\u0007"+
58526 		"d\u0000\u0000\u1a98\u1a99\u0005\u0129\u0000\u0000\u1a99\u1a9b\u0003*\u0015"+
58527 		"\u0000\u1a9a\u1a97\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0001\u0000\u0000"+
58528 		"\u0000\u1a9b\u1aab\u0001\u0000\u0000\u0000\u1a9c\u1a9d\u0005U\u0000\u0000"+
58529 		"\u1a9d\u1a9e\u0005\u0168\u0000\u0000\u1a9e\u1aa8\u0005\u02a4\u0000\u0000"+
58530 		"\u1a9f\u1aa0\u0005M\u0000\u0000\u1aa0\u1aa5\u0003\u03a0\u01d0\u0000\u1aa1"+
58531 		"\u1aa2\u0005%\u0000\u0000\u1aa2\u1aa4\u0003\u03a0\u01d0\u0000\u1aa3\u1aa1"+
58532 		"\u0001\u0000\u0000\u0000\u1aa4\u1aa7\u0001\u0000\u0000\u0000\u1aa5\u1aa3"+
58533 		"\u0001\u0000\u0000\u0000\u1aa5\u1aa6\u0001\u0000\u0000\u0000\u1aa6\u1aa9"+
58534 		"\u0001\u0000\u0000\u0000\u1aa7\u1aa5\u0001\u0000\u0000\u0000\u1aa8\u1a9f"+
58535 		"\u0001\u0000\u0000\u0000\u1aa8\u1aa9\u0001\u0000\u0000\u0000\u1aa9\u1aab"+
58536 		"\u0001\u0000\u0000\u0000\u1aaa\u1a96\u0001\u0000\u0000\u0000\u1aaa\u1a9c"+
58537 		"\u0001\u0000\u0000\u0000\u1aab\u03a3\u0001\u0000\u0000\u0000\u1aac\u1ab2"+
58538 		"\u0003\u03ac\u01d6\u0000\u1aad\u1aae\u0007d\u0000\u0000\u1aae\u1aaf\u0005"+
58539 		"\u0129\u0000\u0000\u1aaf\u1ab3\u0003*\u0015\u0000\u1ab0\u1ab1\u0005\u00d6"+
58540 		"\u0000\u0000\u1ab1\u1ab3\u0005\u0129\u0000\u0000\u1ab2\u1aad\u0001\u0000"+
58541 		"\u0000\u0000\u1ab2\u1ab0\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0001\u0000"+
58542 		"\u0000\u0000\u1ab3\u1ab8\u0001\u0000\u0000\u0000\u1ab4\u1ab5\u0005M\u0000"+
58543 		"\u0000\u1ab5\u1ab6\u0005\u02a1\u0000\u0000\u1ab6\u1ab7\u0005\u0018\u0000"+
58544 		"\u0000\u1ab7\u1ab9\u00034\u001a\u0000\u1ab8\u1ab4\u0001\u0000\u0000\u0000"+
58545 		"\u1ab8\u1ab9\u0001\u0000\u0000\u0000\u1ab9\u03a5\u0001\u0000\u0000\u0000"+
58546 		"\u1aba\u1abb\u0003\u03aa\u01d5\u0000\u1abb\u1abc\u0005U\u0000\u0000\u1abc"+
58547 		"\u1abd\u0005\u0168\u0000\u0000\u1abd\u1ac2\u0005\u02a4\u0000\u0000\u1abe"+
58548 		"\u1abf\u0005M\u0000\u0000\u1abf\u1ac0\u0005\u02a1\u0000\u0000\u1ac0\u1ac1"+
58549 		"\u0005\u0018\u0000\u0000\u1ac1\u1ac3\u00034\u001a\u0000\u1ac2\u1abe\u0001"+
58550 		"\u0000\u0000\u0000\u1ac2\u1ac3\u0001\u0000\u0000\u0000\u1ac3\u03a7\u0001"+
58551 		"\u0000\u0000\u0000\u1ac4\u1ac5\u0003\u03ac\u01d6\u0000\u1ac5\u03a9\u0001"+
58552 		"\u0000\u0000\u0000\u1ac6\u1ac7\u0003\u03ac\u01d6\u0000\u1ac7\u03ab\u0001"+
58553 		"\u0000\u0000\u0000\u1ac8\u1ac9\u0003\u03ae\u01d7\u0000\u1ac9\u03ad\u0001"+
58554 		"\u0000\u0000\u0000\u1aca\u1acd\u0003*\u0015\u0000\u1acb\u1acc\u0005\u0014"+
58555 		"\u0000\u0000\u1acc\u1ace\u0003*\u0015\u0000\u1acd\u1acb\u0001\u0000\u0000"+
58556 		"\u0000\u1acd\u1ace\u0001\u0000\u0000\u0000\u1ace\u03af\u0001\u0000\u0000"+
58557 		"\u0000\u1acf\u1ad0\u00054\u0000\u0000\u1ad0\u1ad2\u0005\u0104\u0000\u0000"+
58558 		"\u1ad1\u1ad3\u0003\u00f8|\u0000\u1ad2\u1ad1\u0001\u0000\u0000\u0000\u1ad2"+
58559 		"\u1ad3\u0001\u0000\u0000\u0000\u1ad3\u1ad4\u0001\u0000\u0000\u0000\u1ad4"+
58560 		"\u1ad5\u0003\u03ac\u01d6\u0000\u1ad5\u03b1\u0001\u0000\u0000\u0000\u1ad6"+
58561 		"\u1ad7\u00053\u0000\u0000\u1ad7\u1ad8\u0005\u0104\u0000\u0000\u1ad8\u1ae5"+
58562 		"\u0003\u03ac\u01d6\u0000\u1ad9\u1ada\u0005M\u0000\u0000\u1ada\u1adf\u0003"+
58563 		"\u03b4\u01da\u0000\u1adb\u1adc\u0005%\u0000\u0000\u1adc\u1ade\u0003\u03b4"+
58564 		"\u01da\u0000\u1add\u1adb\u0001\u0000\u0000\u0000\u1ade\u1ae1\u0001\u0000"+
58565 		"\u0000\u0000\u1adf\u1add\u0001\u0000\u0000\u0000\u1adf\u1ae0\u0001\u0000"+
58566 		"\u0000\u0000\u1ae0\u1ae6\u0001\u0000\u0000\u0000\u1ae1\u1adf\u0001\u0000"+
58567 		"\u0000\u0000\u1ae2\u1ae3\u0005U\u0000\u0000\u1ae3\u1ae4\u0005\u0168\u0000"+
58568 		"\u0000\u1ae4\u1ae6\u0005\u02a4\u0000\u0000\u1ae5\u1ad9\u0001\u0000\u0000"+
58569 		"\u0000\u1ae5\u1ae2\u0001\u0000\u0000\u0000\u1ae6\u03b3\u0001\u0000\u0000"+
58570 		"\u0000\u1ae7\u1ae8\u0005\u00aa\u0000\u0000\u1ae8\u1ae9\u0005\u0018\u0000"+
58571 		"\u0000\u1ae9\u1b07\u0003\u03ac\u01d6\u0000\u1aea\u1aeb\u0005\u02a1\u0000"+
58572 		"\u0000\u1aeb\u1aee\u0005\u0018\u0000\u0000\u1aec\u1aef\u00034\u001a\u0000"+
58573 		"\u1aed\u1aef\u0005l\u0000\u0000\u1aee\u1aec\u0001\u0000\u0000\u0000\u1aee"+
58574 		"\u1aed\u0001\u0000\u0000\u0000\u1aef\u1b07\u0001\u0000\u0000\u0000\u1af0"+
58575 		"\u1af1\u0005\u0129\u0000\u0000\u1af1\u1af2\u0005\u0018\u0000\u0000\u1af2"+
58576 		"\u1b07\u0003*\u0015\u0000\u1af3\u1af4\u0005\u00d5\u0000\u0000\u1af4\u1af5"+
58577 		"\u0005\u0018\u0000\u0000\u1af5\u1af9\u0003\u001c\u000e\u0000\u1af6\u1af7"+
58578 		"\u0005\u02a3\u0000\u0000\u1af7\u1af8\u0005\u0018\u0000\u0000\u1af8\u1afa"+
58579 		"\u0003\u001c\u000e\u0000\u1af9\u1af6\u0001\u0000\u0000\u0000\u1af9\u1afa"+
58580 		"\u0001\u0000\u0000\u0000\u1afa\u1b07\u0001\u0000\u0000\u0000\u1afb\u1afc"+
58581 		"\u0005\u0291\u0000\u0000\u1afc\u1aff\u0005\u0018\u0000\u0000\u1afd\u1b00"+
58582 		"\u0005\u012e\u0000\u0000\u1afe\u1b00\u0003*\u0015\u0000\u1aff\u1afd\u0001"+
58583 		"\u0000\u0000\u0000\u1aff\u1afe\u0001\u0000\u0000\u0000\u1b00\u1b07\u0001"+
58584 		"\u0000\u0000\u0000\u1b01\u1b02\u0005\u02a2\u0000\u0000\u1b02\u1b04\u0005"+
58585 		"\u0018\u0000\u0000\u1b03\u1b05\u0007\u0000\u0000\u0000\u1b04\u1b03\u0001"+
58586 		"\u0000\u0000\u0000\u1b04\u1b05\u0001\u0000\u0000\u0000\u1b05\u1b07\u0001"+
58587 		"\u0000\u0000\u0000\u1b06\u1ae7\u0001\u0000\u0000\u0000\u1b06\u1aea\u0001"+
58588 		"\u0000\u0000\u0000\u1b06\u1af0\u0001\u0000\u0000\u0000\u1b06\u1af3\u0001"+
58589 		"\u0000\u0000\u0000\u1b06\u1afb\u0001\u0000\u0000\u0000\u1b06\u1b01\u0001"+
58590 		"\u0000\u0000\u0000\u1b07\u03b5\u0001\u0000\u0000\u0000\u1b08\u1b09\u0005"+
58591 		"2\u0000\u0000\u1b09\u1b0a\u0005\u0105\u0000\u0000\u1b0a\u1b0d\u0003N\'"+
58592 		"\u0000\u1b0b\u1b0c\u0005\u029a\u0000\u0000\u1b0c\u1b0e\u0003N\'\u0000"+
58593 		"\u1b0d\u1b0b\u0001\u0000\u0000\u0000\u1b0d\u1b0e\u0001\u0000\u0000\u0000"+
58594 		"\u1b0e\u03b7\u0001\u0000\u0000\u0000\u1b0f\u1b10\u00054\u0000\u0000\u1b10"+
58595 		"\u1b12\u0005\u0105\u0000\u0000\u1b11\u1b13\u0003\u00f8|\u0000\u1b12\u1b11"+
58596 		"\u0001\u0000\u0000\u0000\u1b12\u1b13\u0001\u0000\u0000\u0000\u1b13\u1b14"+
58597 		"\u0001\u0000\u0000\u0000\u1b14\u1b15\u0003N\'\u0000\u1b15\u03b9\u0001"+
58598 		"\u0000\u0000\u0000\u1b16\u1b17\u00053\u0000\u0000\u1b17\u1b18\u0005\u0105"+
58599 		"\u0000\u0000\u1b18\u1b23\u0003N\'\u0000\u1b19\u1b1a\u00059\u0000\u0000"+
58600 		"\u1b1a\u1b1b\u0005\u02ad\u0000\u0000\u1b1b\u1b24\u0003\u033e\u019f\u0000"+
58601 		"\u1b1c\u1b1d\u00054\u0000\u0000\u1b1d\u1b1e\u0005\u02ad\u0000\u0000\u1b1e"+
58602 		"\u1b24\u0003\u033e\u019f\u0000\u1b1f\u1b20\u0005M\u0000\u0000\u1b20\u1b21"+
58603 		"\u0005\u00aa\u0000\u0000\u1b21\u1b22\u0005\u0018\u0000\u0000\u1b22\u1b24"+
58604 		"\u0003N\'\u0000\u1b23\u1b19\u0001\u0000\u0000\u0000\u1b23\u1b1c\u0001"+
58605 		"\u0000\u0000\u0000\u1b23\u1b1f\u0001\u0000\u0000\u0000\u1b24\u03bb\u0001"+
58606 		"\u0000\u0000\u0000\u1b25\u1b26\u00052\u0000\u0000\u1b26\u1b27\u0005\u0129"+
58607 		"\u0000\u0000\u1b27\u1b2d\u0003\u03ae\u01d7\u0000\u1b28\u1b2e\u0003\u03be"+
58608 		"\u01df\u0000\u1b29\u1b2e\u0003\u03cc\u01e6\u0000\u1b2a\u1b2e\u0003\u03d0"+
58609 		"\u01e8\u0000\u1b2b\u1b2e\u0003\u03d4\u01ea\u0000\u1b2c\u1b2e\u0003\u03d8"+
58610 		"\u01ec\u0000\u1b2d\u1b28\u0001\u0000\u0000\u0000\u1b2d\u1b29\u0001\u0000"+
58611 		"\u0000\u0000\u1b2d\u1b2a\u0001\u0000\u0000\u0000\u1b2d\u1b2b\u0001\u0000"+
58612 		"\u0000\u0000\u1b2d\u1b2c\u0001\u0000\u0000\u0000\u1b2e\u03bd\u0001\u0000"+
58613 		"\u0000\u0000\u1b2f\u1b30\u0005M\u0000\u0000\u1b30\u1b34\u0003\u03c0\u01e0"+
58614 		"\u0000\u1b31\u1b32\u0005U\u0000\u0000\u1b32\u1b34\u0003\u03c8\u01e4\u0000"+
58615 		"\u1b33\u1b2f\u0001\u0000\u0000\u0000\u1b33\u1b31\u0001\u0000\u0000\u0000"+
58616 		"\u1b34\u03bf\u0001\u0000\u0000\u0000\u1b35\u1b36\u0005\u00d5\u0000\u0000"+
58617 		"\u1b36\u1b3b\u0005\u0018\u0000\u0000\u1b37\u1b3c\u0003\u001c\u000e\u0000"+
58618 		"\u1b38\u1b39\u0003\u03c4\u01e2\u0000\u1b39\u1b3a\u0005\u02ae\u0000\u0000"+
58619 		"\u1b3a\u1b3c\u0001\u0000\u0000\u0000\u1b3b\u1b37\u0001\u0000\u0000\u0000"+
58620 		"\u1b3b\u1b38\u0001\u0000\u0000\u0000\u1b3c\u1b3e\u0001\u0000\u0000\u0000"+
58621 		"\u1b3d\u1b3f\u0005\u02af\u0000\u0000\u1b3e\u1b3d\u0001\u0000\u0000\u0000"+
58622 		"\u1b3e\u1b3f\u0001\u0000\u0000\u0000\u1b3f\u1b49\u0001\u0000\u0000\u0000"+
58623 		"\u1b40\u1b41\u0005%\u0000\u0000\u1b41\u1b46\u0003\u03c2\u01e1\u0000\u1b42"+
58624 		"\u1b43\u0005%\u0000\u0000\u1b43\u1b45\u0003\u03c2\u01e1\u0000\u1b44\u1b42"+
58625 		"\u0001\u0000\u0000\u0000\u1b45\u1b48\u0001\u0000\u0000\u0000\u1b46\u1b44"+
58626 		"\u0001\u0000\u0000\u0000\u1b46\u1b47\u0001\u0000\u0000\u0000\u1b47\u1b4a"+
58627 		"\u0001\u0000\u0000\u0000\u1b48\u1b46\u0001\u0000\u0000\u0000\u1b49\u1b40"+
58628 		"\u0001\u0000\u0000\u0000\u1b49\u1b4a\u0001\u0000\u0000\u0000\u1b4a\u03c1"+
58629 		"\u0001\u0000\u0000\u0000\u1b4b\u1b4c\u0005\u02a5\u0000\u0000\u1b4c\u1b4d"+
58630 		"\u0005\u0018\u0000\u0000\u1b4d\u1b5e\u0003\u03c6\u01e3\u0000\u1b4e\u1b4f"+
58631 		"\u0005\u02b0\u0000\u0000\u1b4f\u1b50\u0005\u0018\u0000\u0000\u1b50\u1b5e"+
58632 		"\u00032\u0019\u0000\u1b51\u1b52\u0005\u0291\u0000\u0000\u1b52\u1b53\u0005"+
58633 		"\u0018\u0000\u0000\u1b53\u1b5e\u0003*\u0015\u0000\u1b54\u1b55\u0005\u02b1"+
58634 		"\u0000\u0000\u1b55\u1b56\u0005\u0018\u0000\u0000\u1b56\u1b5e\u0007\u0000"+
58635 		"\u0000\u0000\u1b57\u1b58\u0005\u02b2\u0000\u0000\u1b58\u1b59\u0005\u0018"+
58636 		"\u0000\u0000\u1b59\u1b5e\u0007\u0000\u0000\u0000\u1b5a\u1b5b\u0005\u015d"+
58637 		"\u0000\u0000\u1b5b\u1b5c\u0005\u0018\u0000\u0000\u1b5c\u1b5e\u0003*\u0015"+
58638 		"\u0000\u1b5d\u1b4b\u0001\u0000\u0000\u0000\u1b5d\u1b4e\u0001\u0000\u0000"+
58639 		"\u0000\u1b5d\u1b51\u0001\u0000\u0000\u0000\u1b5d\u1b54\u0001\u0000\u0000"+
58640 		"\u0000\u1b5d\u1b57\u0001\u0000\u0000\u0000\u1b5d\u1b5a\u0001\u0000\u0000"+
58641 		"\u0000\u1b5e\u03c3\u0001\u0000\u0000\u0000\u1b5f\u1b60\u0005\u02d8\u0000"+
58642 		"\u0000\u1b60\u03c5\u0001\u0000\u0000\u0000\u1b61\u1b62\u0007e\u0000\u0000"+
58643 		"\u1b62\u03c7\u0001\u0000\u0000\u0000\u1b63\u1b6d\u0005\u02b3\u0000\u0000"+
58644 		"\u1b64\u1b65\u0005M\u0000\u0000\u1b65\u1b6a\u0003\u03ca\u01e5\u0000\u1b66"+
58645 		"\u1b67\u0005%\u0000\u0000\u1b67\u1b69\u0003\u03ca\u01e5\u0000\u1b68\u1b66"+
58646 		"\u0001\u0000\u0000\u0000\u1b69\u1b6c\u0001\u0000\u0000\u0000\u1b6a\u1b68"+
58647 		"\u0001\u0000\u0000\u0000\u1b6a\u1b6b\u0001\u0000\u0000\u0000\u1b6b\u1b6e"+
58648 		"\u0001\u0000\u0000\u0000\u1b6c\u1b6a\u0001\u0000\u0000\u0000\u1b6d\u1b64"+
58649 		"\u0001\u0000\u0000\u0000\u1b6d\u1b6e\u0001\u0000\u0000\u0000\u1b6e\u1b75"+
58650 		"\u0001\u0000\u0000\u0000\u1b6f\u1b70\u0005\u0173\u0000\u0000\u1b70\u1b75"+
58651 		"\u0003*\u0015\u0000\u1b71\u1b72\u0005\u0153\u0000\u0000\u1b72\u1b73\u0005"+
58652 		"C\u0000\u0000\u1b73\u1b75\u0003*\u0015\u0000\u1b74\u1b63\u0001\u0000\u0000"+
58653 		"\u0000\u1b74\u1b6f\u0001\u0000\u0000\u0000\u1b74\u1b71\u0001\u0000\u0000"+
58654 		"\u0000\u1b75\u03c9\u0001\u0000\u0000\u0000\u1b76\u1b77\u0005\u02b0\u0000"+
58655 		"\u0000\u1b77\u1b78\u0005\u0018\u0000\u0000\u1b78\u1b7d\u00032\u0019\u0000"+
58656 		"\u1b79\u1b7a\u0005\u0291\u0000\u0000\u1b7a\u1b7b\u0005\u0018\u0000\u0000"+
58657 		"\u1b7b\u1b7d\u0003*\u0015\u0000\u1b7c\u1b76\u0001\u0000\u0000\u0000\u1b7c"+
58658 		"\u1b79\u0001\u0000\u0000\u0000\u1b7d\u03cb\u0001\u0000\u0000\u0000\u1b7e"+
58659 		"\u1b7f\u0005U\u0000\u0000\u1b7f\u1b80\u0005\u0168\u0000\u0000\u1b80\u1b8b"+
58660 		"\u0005\u02a4\u0000\u0000\u1b81\u1b82\u0005M\u0000\u0000\u1b82\u1b87\u0003"+
58661 		"\u03ce\u01e7\u0000\u1b83\u1b84\u0005%\u0000\u0000\u1b84\u1b86\u0003\u03ce"+
58662 		"\u01e7\u0000\u1b85\u1b83\u0001\u0000\u0000\u0000\u1b86\u1b89\u0001\u0000"+
58663 		"\u0000\u0000\u1b87\u1b85\u0001\u0000\u0000\u0000\u1b87\u1b88\u0001\u0000"+
58664 		"\u0000\u0000\u1b88\u1b8b\u0001\u0000\u0000\u0000\u1b89\u1b87\u0001\u0000"+
58665 		"\u0000\u0000\u1b8a\u1b7e\u0001\u0000\u0000\u0000\u1b8a\u1b81\u0001\u0000"+
58666 		"\u0000\u0000\u1b8b\u03cd\u0001\u0000\u0000\u0000\u1b8c\u1b8d\u0005\u00d5"+
58667 		"\u0000\u0000\u1b8d\u1b8e\u0005\u0018\u0000\u0000\u1b8e\u1b93\u0003\u001c"+
58668 		"\u000e\u0000\u1b8f\u1b90\u0005%\u0000\u0000\u1b90\u1b91\u0005\u02a5\u0000"+
58669 		"\u0000\u1b91\u1b92\u0005\u0018\u0000\u0000\u1b92\u1b94\u0003\u03c6\u01e3"+
58670 		"\u0000\u1b93\u1b8f\u0001\u0000\u0000\u0000\u1b93\u1b94\u0001\u0000\u0000"+
58671 		"\u0000\u1b94\u03cf\u0001\u0000\u0000\u0000\u1b95\u1b96\u0005U\u0000\u0000"+
58672 		"\u1b96\u1b97\u0005\u0168\u0000\u0000\u1b97\u1b99\u0005\u02a4\u0000\u0000"+
58673 		"\u1b98\u1b95\u0001\u0000\u0000\u0000\u1b98\u1b99\u0001\u0000\u0000\u0000"+
58674 		"\u1b99\u1b9a\u0001\u0000\u0000\u0000\u1b9a\u1b9b\u0005M\u0000\u0000\u1b9b"+
58675 		"\u1ba0\u0003\u03d2\u01e9\u0000\u1b9c\u1b9d\u0005%\u0000\u0000\u1b9d\u1b9f"+
58676 		"\u0003\u03d2\u01e9\u0000\u1b9e\u1b9c\u0001\u0000\u0000\u0000\u1b9f\u1ba2"+
58677 		"\u0001\u0000\u0000\u0000\u1ba0\u1b9e\u0001\u0000\u0000\u0000\u1ba0\u1ba1"+
58678 		"\u0001\u0000\u0000\u0000\u1ba1\u03d1\u0001\u0000\u0000\u0000\u1ba2\u1ba0"+
58679 		"\u0001\u0000\u0000\u0000\u1ba3\u1ba4\u0005\u00d5\u0000\u0000\u1ba4\u1ba5"+
58680 		"\u0005\u0018\u0000\u0000\u1ba5\u1bb0\u0003\u001c\u000e\u0000\u1ba6\u1ba7"+
58681 		"\u0005\u02a5\u0000\u0000\u1ba7\u1ba8\u0005\u0018\u0000\u0000\u1ba8\u1bb0"+
58682 		"\u0003\u03c6\u01e3\u0000\u1ba9\u1baa\u0005\u02b0\u0000\u0000\u1baa\u1bab"+
58683 		"\u0005\u0018\u0000\u0000\u1bab\u1bb0\u00032\u0019\u0000\u1bac\u1bad\u0005"+
58684 		"\u0291\u0000\u0000\u1bad\u1bae\u0005\u0018\u0000\u0000\u1bae\u1bb0\u0003"+
58685 		"*\u0015\u0000\u1baf\u1ba3\u0001\u0000\u0000\u0000\u1baf\u1ba6\u0001\u0000"+
58686 		"\u0000\u0000\u1baf\u1ba9\u0001\u0000\u0000\u0000\u1baf\u1bac\u0001\u0000"+
58687 		"\u0000\u0000\u1bb0\u03d3\u0001\u0000\u0000\u0000\u1bb1\u1bb2\u0005M\u0000"+
58688 		"\u0000\u1bb2\u1bb3\u0003\u03d6\u01eb\u0000\u1bb3\u03d5\u0001\u0000\u0000"+
58689 		"\u0000\u1bb4\u1bb5\u0005\u00d5\u0000\u0000\u1bb5\u1bb6\u0005\u0018\u0000"+
58690 		"\u0000\u1bb6\u1bbb\u0003\u001c\u000e\u0000\u1bb7\u1bb8\u0005%\u0000\u0000"+
58691 		"\u1bb8\u1bb9\u0005\u02a5\u0000\u0000\u1bb9\u1bba\u0005\u0018\u0000\u0000"+
58692 		"\u1bba\u1bbc\u0003\u03c6\u01e3\u0000\u1bbb\u1bb7\u0001\u0000\u0000\u0000"+
58693 		"\u1bbb\u1bbc\u0001\u0000\u0000\u0000\u1bbc\u03d7\u0001\u0000\u0000\u0000"+
58694 		"\u1bbd\u1bbe\u0005M\u0000\u0000\u1bbe\u1bc2\u0003\u03da\u01ed\u0000\u1bbf"+
58695 		"\u1bc0\u0005U\u0000\u0000\u1bc0\u1bc2\u0005\u02b3\u0000\u0000\u1bc1\u1bbd"+
58696 		"\u0001\u0000\u0000\u0000\u1bc1\u1bbf\u0001\u0000\u0000\u0000\u1bc2\u03d9"+
58697 		"\u0001\u0000\u0000\u0000\u1bc3\u1bc4\u0005\u00d5\u0000\u0000\u1bc4\u1bc5"+
58698 		"\u0005\u0018\u0000\u0000\u1bc5\u1bc7\u0003\u001c\u000e\u0000\u1bc6\u1bc8"+
58699 		"\u0005\u02af\u0000\u0000\u1bc7\u1bc6\u0001\u0000\u0000\u0000\u1bc7\u1bc8"+
58700 		"\u0001\u0000\u0000\u0000\u1bc8\u1bd2\u0001\u0000\u0000\u0000\u1bc9\u1bca"+
58701 		"\u0005%\u0000\u0000\u1bca\u1bcf\u0003\u03dc\u01ee\u0000\u1bcb\u1bcc\u0005"+
58702 		"%\u0000\u0000\u1bcc\u1bce\u0003\u03dc\u01ee\u0000\u1bcd\u1bcb\u0001\u0000"+
58703 		"\u0000\u0000\u1bce\u1bd1\u0001\u0000\u0000\u0000\u1bcf\u1bcd\u0001\u0000"+
58704 		"\u0000\u0000\u1bcf\u1bd0\u0001\u0000\u0000\u0000\u1bd0\u1bd3\u0001\u0000"+
58705 		"\u0000\u0000\u1bd1\u1bcf\u0001\u0000\u0000\u0000\u1bd2\u1bc9\u0001\u0000"+
58706 		"\u0000\u0000\u1bd2\u1bd3\u0001\u0000\u0000\u0000\u1bd3\u03db\u0001\u0000"+
58707 		"\u0000\u0000\u1bd4\u1bd5\u0005\u02b1\u0000\u0000\u1bd5\u1bd6\u0005\u0018"+
58708 		"\u0000\u0000\u1bd6\u1bdb\u0007\u0000\u0000\u0000\u1bd7\u1bd8\u0005\u02b2"+
58709 		"\u0000\u0000\u1bd8\u1bd9\u0005\u0018\u0000\u0000\u1bd9\u1bdb\u0007\u0000"+
58710 		"\u0000\u0000\u1bda\u1bd4\u0001\u0000\u0000\u0000\u1bda\u1bd7\u0001\u0000"+
58711 		"\u0000\u0000\u1bdb\u03dd\u0001\u0000\u0000\u0000\u1bdc\u1bdd\u00054\u0000"+
58712 		"\u0000\u1bdd\u1bde\u0005\u0129\u0000\u0000\u1bde\u1bdf\u0003\u03ae\u01d7"+
58713 		"\u0000\u1bdf\u03df\u0001\u0000\u0000\u0000\u1be0\u1be1\u00053\u0000\u0000"+
58714 		"\u1be1\u1be2\u0005\u0129\u0000\u0000\u1be2\u1bee\u0003\u03ae\u01d7\u0000"+
58715 		"\u1be3\u1bef\u0003\u03e2\u01f1\u0000\u1be4\u1be5\u0005M\u0000\u0000\u1be5"+
58716 		"\u1bea\u0003\u03e4\u01f2\u0000\u1be6\u1be7\u0005%\u0000\u0000\u1be7\u1be9"+
58717 		"\u0003\u03e4\u01f2\u0000\u1be8\u1be6\u0001\u0000\u0000\u0000\u1be9\u1bec"+
58718 		"\u0001\u0000\u0000\u0000\u1bea\u1be8\u0001\u0000\u0000\u0000\u1bea\u1beb"+
58719 		"\u0001\u0000\u0000\u0000\u1beb\u1bef\u0001\u0000\u0000\u0000\u1bec\u1bea"+
58720 		"\u0001\u0000\u0000\u0000\u1bed\u1bef\u0003\u03e8\u01f4\u0000\u1bee\u1be3"+
58721 		"\u0001\u0000\u0000\u0000\u1bee\u1be4\u0001\u0000\u0000\u0000\u1bee\u1bed"+
58722 		"\u0001\u0000\u0000\u0000\u1bef\u03e1\u0001\u0000\u0000\u0000\u1bf0\u1bf1"+
58723 		"\u0007.\u0000\u0000\u1bf1\u03e3\u0001\u0000\u0000\u0000\u1bf2\u1bf3\u0005"+
58724 		"\u00d5\u0000\u0000\u1bf3\u1bf8\u0005\u0018\u0000\u0000\u1bf4\u1bf9\u0003"+
58725 		"\u001c\u000e\u0000\u1bf5\u1bf6\u0003\u03c4\u01e2\u0000\u1bf6\u1bf7\u0005"+
58726 		"\u02ae\u0000\u0000\u1bf7\u1bf9\u0001\u0000\u0000\u0000\u1bf8\u1bf4\u0001"+
58727 		"\u0000\u0000\u0000\u1bf8\u1bf5\u0001\u0000\u0000\u0000\u1bf9\u1c01\u0001"+
58728 		"\u0000";
58729 	private static final String _serializedATNSegment3 =
58730 		"\u0000\u0000\u1bfa\u1bfb\u0005\u02a3\u0000\u0000\u1bfb\u1bfc\u0005\u0018"+
58731 		"\u0000\u0000\u1bfc\u1c02\u0003\u001c\u000e\u0000\u1bfd\u1bff\u0003\u03e6"+
58732 		"\u01f3\u0000\u1bfe\u1c00\u0003\u03e6\u01f3\u0000\u1bff\u1bfe\u0001\u0000"+
58733 		"\u0000\u0000\u1bff\u1c00\u0001\u0000\u0000\u0000\u1c00\u1c02\u0001\u0000"+
58734 		"\u0000\u0000\u1c01\u1bfa\u0001\u0000\u0000\u0000\u1c01\u1bfd\u0001\u0000"+
58735 		"\u0000\u0000\u1c01\u1c02\u0001\u0000\u0000\u0000\u1c02\u1c18\u0001\u0000"+
58736 		"\u0000\u0000\u1c03\u1c04\u0005\u02b0\u0000\u0000\u1c04\u1c05\u0005\u0018"+
58737 		"\u0000\u0000\u1c05\u1c18\u00032\u0019\u0000\u1c06\u1c07\u0005\u0291\u0000"+
58738 		"\u0000\u1c07\u1c08\u0005\u0018\u0000\u0000\u1c08\u1c18\u0003*\u0015\u0000"+
58739 		"\u1c09\u1c0a\u0005\u00aa\u0000\u0000\u1c0a\u1c0b\u0005\u0018\u0000\u0000"+
58740 		"\u1c0b\u1c18\u0003\u03ae\u01d7\u0000\u1c0c\u1c0d\u0005\u02b2\u0000\u0000"+
58741 		"\u1c0d\u1c0e\u0005\u0018\u0000\u0000\u1c0e\u1c18\u0007\u0000\u0000\u0000"+
58742 		"\u1c0f\u1c10\u0005\u02b1\u0000\u0000\u1c10\u1c11\u0005\u0018\u0000\u0000"+
58743 		"\u1c11\u1c18\u0007\u0000\u0000\u0000\u1c12\u1c13\u0005\u015d\u0000\u0000"+
58744 		"\u1c13\u1c14\u0005\u0018\u0000\u0000\u1c14\u1c18\u0003*\u0015\u0000\u1c15"+
58745 		"\u1c16\u0005\u0100\u0000\u0000\u1c16\u1c18\u0005\u015d\u0000\u0000\u1c17"+
58746 		"\u1bf2\u0001\u0000\u0000\u0000\u1c17\u1c03\u0001\u0000\u0000\u0000\u1c17"+
58747 		"\u1c06\u0001\u0000\u0000\u0000\u1c17\u1c09\u0001\u0000\u0000\u0000\u1c17"+
58748 		"\u1c0c\u0001\u0000\u0000\u0000\u1c17\u1c0f\u0001\u0000\u0000\u0000\u1c17"+
58749 		"\u1c12\u0001\u0000\u0000\u0000\u1c17\u1c15\u0001\u0000\u0000\u0000\u1c18"+
58750 		"\u03e5\u0001\u0000\u0000\u0000\u1c19\u1c1a\u0007f\u0000\u0000\u1c1a\u03e7"+
58751 		"\u0001\u0000\u0000\u0000\u1c1b\u1c1c\u00059\u0000\u0000\u1c1c\u1c1d\u0005"+
58752 		"\u015d\u0000\u0000\u1c1d\u1c22\u0003*\u0015\u0000\u1c1e\u1c1f\u00054\u0000"+
58753 		"\u0000\u1c1f\u1c20\u0005\u015d\u0000\u0000\u1c20\u1c22\u0003*\u0015\u0000"+
58754 		"\u1c21\u1c1b\u0001\u0000\u0000\u0000\u1c21\u1c1e\u0001\u0000\u0000\u0000"+
58755 		"\u1c22\u03e9\u0001\u0000\u0000\u0000\u1c23\u1c28\u0005\u02b5\u0000\u0000"+
58756 		"\u1c24\u1c25\u0005M\u0000\u0000\u1c25\u1c26\u0005\u02b6\u0000\u0000\u1c26"+
58757 		"\u1c27\u0005\u0018\u0000\u0000\u1c27\u1c29\u0003\u00eau\u0000\u1c28\u1c24"+
58758 		"\u0001\u0000\u0000\u0000\u1c28\u1c29\u0001\u0000\u0000\u0000\u1c29\u03eb"+
58759 		"\u0001\u0000\u0000\u0000\u0344\u0427\u042a\u043a\u0446\u044c\u044e\u0450"+
58760 		"\u0457\u045d\u045f\u0467\u046b\u0473\u0477\u047d\u0488\u048d\u0498\u04a4"+
58761 		"\u04a8\u04b5\u04bc\u04c1\u04c6\u04cd\u04d4\u04db\u04de\u04e1\u04e8\u04f3"+
58762 		"\u04f8\u04fc\u050d\u0518\u051e\u0525\u0529\u0534\u053a\u053c\u0541\u054e"+
58763 		"\u055c\u055e\u0567\u0574\u0583\u0585\u058c\u0593\u059c\u05a3\u05ac\u05b2"+
58764 		"\u05b5\u05d8\u05da\u05e6\u05ee\u05f4\u05fe\u0605\u060b\u0610\u0617\u061b"+
58765 		"\u062a\u0637\u063d\u064d\u0653\u065c\u0660\u0662\u066d\u0671\u067f\u0688"+
58766 		"\u068d\u0696\u069a\u06a3\u06ab\u06af\u06bc\u06c1\u06cd\u06d2\u06db\u06df"+
58767 		"\u06e6\u06ed\u06f1\u06f6\u06f9\u0709\u0712\u071e\u0720\u0725\u0729\u072c"+
58768 		"\u0731\u073a\u073f\u0747\u0753\u075c\u0762\u0769\u0773\u0776\u0779\u0784"+
58769 		"\u078c\u0795\u079d\u07a5\u07a9\u07b6\u07b8\u07c1\u07d6\u07db\u07e7\u07f4"+
58770 		"\u07fd\u080a\u081f\u0828\u082c\u0845\u084f\u0859\u0862\u0870\u0878\u087e"+
58771 		"\u0886\u0891\u0898\u08a2\u08a7\u08c8\u08d1\u08d4\u08db\u08e2\u08e9\u08f2"+
58772 		"\u08f9\u08ff\u0906\u090c\u0913\u0919\u0920\u0926\u092d\u0934\u0936\u093b"+
58773 		"\u0942\u094c\u0958\u095f\u0963\u0965\u0968\u096c\u096f\u0975\u097a\u0985"+
58774 		"\u0989\u098b\u098e\u0993\u09a2\u09a6\u09b2\u09b7\u09c0\u09c7\u09cc\u09db"+
58775 		"\u09e5\u09f0\u09f3\u09ff\u0a03\u0a15\u0a1a\u0a1e\u0a23\u0a27\u0a2e\u0a33"+
58776 		"\u0a3b\u0a44\u0a48\u0a4c\u0a4f\u0a52\u0a55\u0a63\u0a68\u0a6d\u0a7f\u0a81"+
58777 		"\u0a8c\u0a94\u0a99\u0aa2\u0aa9\u0aaf\u0ab8\u0abb\u0abe\u0ac1\u0aca\u0ad2"+
58778 		"\u0adb\u0ae2\u0ae5\u0aed\u0aef\u0af2\u0afc\u0b01\u0b06\u0b0a\u0b0d\u0b11"+
58779 		"\u0b14\u0b19\u0b21\u0b2a\u0b32\u0b35\u0b38\u0b3b\u0b41\u0b45\u0b4d\u0b63"+
58780 		"\u0b65\u0b6a\u0b6c\u0b73\u0b75\u0b79\u0b81\u0b8f\u0b98\u0ba7\u0bad\u0bb1"+
58781 		"\u0bb8\u0bcc\u0bd5\u0bd8\u0bee\u0bf0\u0bfb\u0c0b\u0c10\u0c14\u0c19\u0c20"+
58782 		"\u0c2a\u0c31\u0c34\u0c3f\u0c43\u0c48\u0c4e\u0c53\u0c56\u0c61\u0c6a\u0c6e"+
58783 		"\u0c7d\u0c84\u0c90\u0c93\u0c97\u0c9b\u0ca4\u0ca7\u0caa\u0cb1\u0cb6\u0cbf"+
58784 		"\u0cd3\u0cd5\u0cdb\u0ce2\u0ce7\u0cee\u0cf2\u0cf8\u0cfe\u0d03\u0d09\u0d10"+
58785 		"\u0d16\u0d1f\u0d26\u0d28\u0d2e\u0d31\u0d34\u0d39\u0d40\u0d49\u0d4e\u0d57"+
58786 		"\u0d59\u0d5e\u0d67\u0d69\u0d6c\u0d7e\u0d80\u0d8a\u0d91\u0d94\u0d98\u0da0"+
58787 		"\u0da3\u0da7\u0dae\u0db5\u0dc0\u0ddc\u0de4\u0df6\u0df8\u0dff\u0e02\u0e04"+
58788 		"\u0e0b\u0e0d\u0e12\u0e19\u0e1e\u0e21\u0e25\u0e2e\u0e31\u0e39\u0e3d\u0e41"+
58789 		"\u0e46\u0e4b\u0e4f\u0e5a\u0e61\u0e67\u0e6b\u0e6f\u0e77\u0e79\u0e7c\u0e83"+
58790 		"\u0e88\u0e91\u0e96\u0e9e\u0ea5\u0ead\u0eb6\u0ec2\u0ed2\u0ed5\u0ed7\u0eda"+
58791 		"\u0edd\u0ee0\u0ee3\u0ef5\u0efa\u0eff\u0f04\u0f07\u0f0b\u0f13\u0f1f\u0f22"+
58792 		"\u0f25\u0f34\u0f37\u0f3a\u0f3e\u0f42\u0f4c\u0f4f\u0f52\u0f5d\u0f62\u0f68"+
58793 		"\u0f6c\u0f6f\u0f7a\u0f7d\u0f82\u0f84\u0f90\u0f93\u0f9a\u0f9d\u0fa1\u0fa5"+
58794 		"\u0fa8\u0fab\u0faf\u0fba\u0fbd\u0fc4\u0fc7\u0fcb\u0fd2\u0fd7\u0fe2\u0fe7"+
58795 		"\u0fe9\u0ff6\u1001\u1009\u100c\u1010\u1016\u1020\u102a\u102f\u103b\u1041"+
58796 		"\u1044\u1047\u104a\u104d\u1050\u1053\u1057\u105c\u1063\u106a\u1077\u1083"+
58797 		"\u1089\u1092\u1095\u1099\u109d\u10a6\u10ab\u10b4\u10b6\u10bb\u10bd\u10c4"+
58798 		"\u10cf\u10d8\u10df\u10e1\u10ea\u10ef\u10f6\u10fd\u110f\u1114\u1118\u1133"+
58799 		"\u1136\u113f\u1158\u115b\u115d\u1162\u116a\u117f\u1181\u118a\u118d\u119c"+
58800 		"\u11a1\u11aa\u11be\u11c1\u11c5\u11d1\u11d3\u11e0\u11e2\u11ec\u1219\u121f"+
58801 		"\u1228\u1237\u123b\u1244\u124a\u1254\u125d\u1268\u1274\u1276\u127e\u128c"+
58802 		"\u1294\u1299\u129b\u12a4\u12aa\u12bf\u12c6\u12ce\u12d3\u12d5\u12fe\u1303"+
58803 		"\u1312\u131a\u1331\u133a\u1342\u134d\u1352\u135a\u1365\u1370\u1379\u1380"+
58804 		"\u1384\u138a\u139f\u13ad\u13b0\u13bb\u13c0\u13c3\u13c7\u13ca\u13ce\u13d1"+
58805 		"\u13d4\u13da\u13dd\u13e0\u13e6\u13e9\u13f1\u13f5\u13f8\u13fd\u1406\u1411"+
58806 		"\u1414\u1417\u141b\u141f\u1423\u1426\u1432\u1436\u143e\u1445\u1449\u144c"+
58807 		"\u1450\u1454\u1457\u145a\u145d\u1463\u1466\u146a\u146d\u1470\u147b\u147f"+
58808 		"\u1484\u1488\u1490\u1494\u1499\u149d\u14a1\u14a5\u14a8\u14ab\u14ae\u14b1"+
58809 		"\u14b4\u14b7\u14be\u14c0\u14c6\u14ce\u14d2\u14d6\u14d9\u14dc\u14de\u14e2"+
58810 		"\u14e6\u14e9\u14ed\u14f7\u14fa\u14fc\u1500\u1512\u1519\u151e\u1521\u1525"+
58811 		"\u1529\u152d\u1530\u1536\u1539\u153c\u1542\u1545\u1549\u154e\u1554\u1556"+
58812 		"\u155c\u1568\u157a\u157f\u1587\u158c\u158e\u1595\u159c\u159f\u15a7\u15d1"+
58813 		"\u15d3\u15e9\u15f0\u1628\u162e\u1636\u1639\u1643\u1645\u1647\u164c\u164e"+
58814 		"\u1650\u1656\u1658\u165f\u1665\u1667\u1669\u166b\u1670\u1674\u167c\u167e"+
58815 		"\u1688\u168a\u168e\u1692\u1694\u1699\u169b\u169e\u16a7\u16b1\u16bd\u16c2"+
58816 		"\u16ca\u16d0\u16d4\u16d9\u16e1\u16e7\u16eb\u16f0\u16f4\u16fb\u1704\u170b"+
58817 		"\u1712\u171a\u171e\u1723\u172b\u172f\u1733\u1738\u1740\u1744\u1749\u174e"+
58818 		"\u1756\u175a\u175e\u1763\u176b\u176f\u1777\u178c\u179e\u17a9\u17be\u17d8"+
58819 		"\u17ed\u17f1\u17f6\u17ff\u1801\u1813\u1827\u1832\u1845\u1849\u1851\u1855"+
58820 		"\u1860\u187c\u1882\u189f\u18a6\u18aa\u18af\u18b9\u18c4\u18ce\u18d7\u18ed"+
58821 		"\u18fa\u1901\u190d\u191a\u1927\u1932\u193e\u1944\u194a\u1950\u195c\u1969"+
58822 		"\u1976\u1982\u1988\u198e\u1995\u1999\u19a6\u19b3\u19bc\u19c6\u19f6\u1a00"+
58823 		"\u1a02\u1a0e\u1a14\u1a1c\u1a1f\u1a28\u1a2b\u1a38\u1a3b\u1a42\u1a48\u1a4f"+
58824 		"\u1a57\u1a5a\u1a65\u1a68\u1a71\u1a7a\u1a82\u1a84\u1a8d\u1a92\u1a94\u1a9a"+
58825 		"\u1aa5\u1aa8\u1aaa\u1ab2\u1ab8\u1ac2\u1acd\u1ad2\u1adf\u1ae5\u1aee\u1af9"+
58826 		"\u1aff\u1b04\u1b06\u1b0d\u1b12\u1b23\u1b2d\u1b33\u1b3b\u1b3e\u1b46\u1b49"+
58827 		"\u1b5d\u1b6a\u1b6d\u1b74\u1b7c\u1b87\u1b8a\u1b93\u1b98\u1ba0\u1baf\u1bbb"+
58828 		"\u1bc1\u1bc7\u1bcf\u1bd2\u1bda\u1bea\u1bee\u1bf8\u1bff\u1c01\u1c17\u1c21"+
58829 		"\u1c28";
58830 	public static final String _serializedATN = Utils.join(
58831 		new String[] {
58832 			_serializedATNSegment0,
58833 			_serializedATNSegment1,
58834 			_serializedATNSegment2,
58835 			_serializedATNSegment3
58836 		},
58837 		""
58838 	);
58839 	public static final ATN _ATN =
58840 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
58841 	static {
58842 		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
58843 		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
58844 			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
58845 		}
58846 	}
58847 }